OSDN Git Service

ide: Handle irq disabling consistently
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 4 May 2018 14:24:44 +0000 (16:24 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Jun 2018 20:26:46 +0000 (16:26 -0400)
commit56f0ddadcea9dc264f1c8eed6cc984071b141554
tree2da35ce3b963091950a542f30ce4c54a463aa1d5
parent820ec411e67c8dab645fb7e180875d619b6ab7e7
ide: Handle irq disabling consistently

ide_timer_expiry() disables interrupt at function entry when acquiring
hwif->lock. Before disabling the device interrupt it unlocks hwif->lock,
but interrupts stay disabled. After the call to disable_irq() interrupts
are disabled again, which is a pointless exercise.

After the device irq handler has been invoked with interrupts disabled,
hwif->lock is acquired again with spin_lock_irq() because the device irq
handler might have reenabled interrupts. This is not documented and
confusing for the casual reader.

Remove the redundant local_irq_disable() and add a comment which explains
why hwif->lock has to be reacquired with spin_lock_irq().

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/ide/ide-io.c