diff options
author | Pankaj Raghav <dev@pankajraghav.com> | 2023-05-16 21:37:49 +0200 |
---|---|---|
committer | Andrew Kaster <andrewdkaster@gmail.com> | 2023-05-21 18:01:29 -0600 |
commit | d14c2a358352ec40fb7c8236f21df8419876a5e6 (patch) | |
tree | 0d01fbeee96f6617f6679709083387035b631c14 | |
parent | ff70418ffc0148c1a26b0ac54dd692e842561ac4 (diff) | |
download | serenity-d14c2a358352ec40fb7c8236f21df8419876a5e6.zip |
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.
-rw-r--r-- | Kernel/Interrupts/PCIIRQHandler.cpp | 5 | ||||
-rw-r--r-- | Kernel/Interrupts/PCIIRQHandler.h | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/Kernel/Interrupts/PCIIRQHandler.cpp b/Kernel/Interrupts/PCIIRQHandler.cpp index ada63ecc0f..d70caae5a7 100644 --- a/Kernel/Interrupts/PCIIRQHandler.cpp +++ b/Kernel/Interrupts/PCIIRQHandler.cpp @@ -63,4 +63,9 @@ void PCIIRQHandler::disable_irq() device.disable_interrupt(interrupt_number()); } +bool PCIIRQHandler::handle_interrupt(RegisterState const& regs) +{ + return handle_irq(regs); +} + } diff --git a/Kernel/Interrupts/PCIIRQHandler.h b/Kernel/Interrupts/PCIIRQHandler.h index f167b88d3d..a06138f12d 100644 --- a/Kernel/Interrupts/PCIIRQHandler.h +++ b/Kernel/Interrupts/PCIIRQHandler.h @@ -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(); |