Messages in this thread | | | Date | Wed, 30 Oct 2013 17:24:17 +0800 | Subject | Re: [PATCH] genirq: Avoid NULL OOPS in irq handling | From | "陈华才" <> |
| |
I use a Loongson-3(MIPS-series CPU) machine, there is a serial port integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() as the irq handler. Maybe I should move the checking into handle_percpu_irq()?
Huacai
> On Sat, 28 Sep 2013, Huacai Chen wrote: > >> Some devices (e.g. serial port) setup irq handler at dev open and free >> it at dev close. So, sometimes there is no irqaction for a specific >> irq. But some buggy devices may send irqs at any time. This patch avoid >> the NULL OOPS when irqaction isn't registered. > > All callers except the real per cpu interrupts are checking whether > there is a valid action before calling. And serial ports are not > routed to real per cpu interrupts. Can you provide more detailed > information about the problem you are trying to solve please? > > Thanks, > > tglx > >> Signed-off-by: Huacai Chen <chenhc@lemote.com> >> --- >> kernel/irq/handle.c | 4 ++++ >> 1 files changed, 4 insertions(+), 0 deletions(-) >> >> diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c >> index 131ca17..1c78e69 100644 >> --- a/kernel/irq/handle.c >> +++ b/kernel/irq/handle.c >> @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, >> struct irqaction *action) >> irqreturn_t retval = IRQ_NONE; >> unsigned int flags = 0, irq = desc->irq_data.irq; >> >> + if (!action) >> + goto out; >> + >> do { >> irqreturn_t res; >> >> @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, >> struct irqaction *action) >> >> add_interrupt_randomness(irq, flags); >> >> +out: >> if (!noirqdebug) >> note_interrupt(irq, desc, retval); >> return retval; >> -- >> 1.7.7.3 >> >> >
| |