diff options
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/chip.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 9336f2e89e40..ac1f850d4937 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -252,7 +252,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
252 | mask_ack_irq(desc, irq); | 252 | mask_ack_irq(desc, irq); |
253 | 253 | ||
254 | if (unlikely(desc->status & IRQ_INPROGRESS)) | 254 | if (unlikely(desc->status & IRQ_INPROGRESS)) |
255 | goto out; | 255 | goto out_unlock; |
256 | desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); | 256 | desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); |
257 | kstat_cpu(cpu).irqs[irq]++; | 257 | kstat_cpu(cpu).irqs[irq]++; |
258 | 258 | ||
@@ -263,7 +263,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
263 | action = desc->action; | 263 | action = desc->action; |
264 | if (unlikely(!action || (desc->status & IRQ_DISABLED))) { | 264 | if (unlikely(!action || (desc->status & IRQ_DISABLED))) { |
265 | desc->status |= IRQ_PENDING; | 265 | desc->status |= IRQ_PENDING; |
266 | goto out; | 266 | goto out_unlock; |
267 | } | 267 | } |
268 | 268 | ||
269 | desc->status |= IRQ_INPROGRESS; | 269 | desc->status |= IRQ_INPROGRESS; |
@@ -276,9 +276,9 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
276 | 276 | ||
277 | spin_lock(&desc->lock); | 277 | spin_lock(&desc->lock); |
278 | desc->status &= ~IRQ_INPROGRESS; | 278 | desc->status &= ~IRQ_INPROGRESS; |
279 | out: | ||
280 | if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask) | 279 | if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask) |
281 | desc->chip->unmask(irq); | 280 | desc->chip->unmask(irq); |
281 | out_unlock: | ||
282 | spin_unlock(&desc->lock); | 282 | spin_unlock(&desc->lock); |
283 | } | 283 | } |
284 | 284 | ||