Kernel: Move handle_interrupt out-of-line in PCIIRQHandler

Upgrade to GCC 13.1.0 triggered an UBSAN in PCIIRQHandler. Moving the
handle_interrupt() function out-of-line fixes this issue.
This commit is contained in:
Pankaj Raghav 2023-05-16 21:37:49 +02:00 committed by Andrew Kaster
parent ff70418ffc
commit d14c2a3583
2 changed files with 6 additions and 1 deletions

View file

@ -63,4 +63,9 @@ void PCIIRQHandler::disable_irq()
device.disable_interrupt(interrupt_number());
}
bool PCIIRQHandler::handle_interrupt(RegisterState const& regs)
{
return handle_irq(regs);
}
}

View file

@ -18,7 +18,7 @@ class PCIIRQHandler : public GenericInterruptHandler {
public:
virtual ~PCIIRQHandler() = default;
virtual bool handle_interrupt(RegisterState const& regs) override { return handle_irq(regs); }
virtual bool handle_interrupt(RegisterState const& regs) override;
virtual bool handle_irq(RegisterState const&) = 0;
void enable_irq();