diff options
Diffstat (limited to 'kernel/irq/chip.c')
| -rw-r--r-- | kernel/irq/chip.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 0dc24386dd99..4cf65f5c6a74 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -67,6 +67,13 @@ void dynamic_irq_cleanup(unsigned int irq) | |||
| 67 | 67 | ||
| 68 | desc = irq_desc + irq; | 68 | desc = irq_desc + irq; |
| 69 | spin_lock_irqsave(&desc->lock, flags); | 69 | spin_lock_irqsave(&desc->lock, flags); |
| 70 | if (desc->action) { | ||
| 71 | spin_unlock_irqrestore(&desc->lock, flags); | ||
| 72 | printk(KERN_ERR "Destroying IRQ%d without calling free_irq\n", | ||
| 73 | irq); | ||
| 74 | WARN_ON(1); | ||
| 75 | return; | ||
| 76 | } | ||
| 70 | desc->handle_irq = handle_bad_irq; | 77 | desc->handle_irq = handle_bad_irq; |
| 71 | desc->chip = &no_irq_chip; | 78 | desc->chip = &no_irq_chip; |
| 72 | spin_unlock_irqrestore(&desc->lock, flags); | 79 | spin_unlock_irqrestore(&desc->lock, flags); |
