diff options
| -rw-r--r-- | arch/powerpc/kernel/irq.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 0df255414836..ac4d29119f3e 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
| @@ -295,17 +295,20 @@ static inline void handle_one_irq(unsigned int irq) | |||
| 295 | unsigned long saved_sp_limit; | 295 | unsigned long saved_sp_limit; |
| 296 | struct irq_desc *desc; | 296 | struct irq_desc *desc; |
| 297 | 297 | ||
| 298 | desc = irq_to_desc(irq); | ||
| 299 | if (!desc) | ||
| 300 | return; | ||
| 301 | |||
| 298 | /* Switch to the irq stack to handle this */ | 302 | /* Switch to the irq stack to handle this */ |
| 299 | curtp = current_thread_info(); | 303 | curtp = current_thread_info(); |
| 300 | irqtp = hardirq_ctx[smp_processor_id()]; | 304 | irqtp = hardirq_ctx[smp_processor_id()]; |
| 301 | 305 | ||
| 302 | if (curtp == irqtp) { | 306 | if (curtp == irqtp) { |
| 303 | /* We're already on the irq stack, just handle it */ | 307 | /* We're already on the irq stack, just handle it */ |
| 304 | generic_handle_irq(irq); | 308 | desc->handle_irq(irq, desc); |
| 305 | return; | 309 | return; |
| 306 | } | 310 | } |
| 307 | 311 | ||
| 308 | desc = irq_to_desc(irq); | ||
| 309 | saved_sp_limit = current->thread.ksp_limit; | 312 | saved_sp_limit = current->thread.ksp_limit; |
| 310 | 313 | ||
| 311 | irqtp->task = curtp->task; | 314 | irqtp->task = curtp->task; |
