diff options
author | Alexey Khoroshilov <khoroshilov@ispras.ru> | 2015-09-12 00:34:48 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-09-11 16:18:33 -0700 |
commit | e8684c88774c0ddfeefdbed0aa469b25b9962f3e (patch) | |
tree | e88c7b91bd30df72be335b9577d30126a4851523 /net | |
parent | 38c089d1d8d058f5dff018a811568aa8e8bc47fc (diff) | |
download | talos-obmc-linux-e8684c88774c0ddfeefdbed0aa469b25b9962f3e.tar.gz talos-obmc-linux-e8684c88774c0ddfeefdbed0aa469b25b9962f3e.zip |
irda: ali-ircc: Fix deadlock in ali_ircc_sir_change_speed()
ali_ircc_sir_change_speed() is always called with self->lock held,
so acquiring the lock inside it leads to unavoidable deadlock.
Call graph:
ali_ircc_sir_change_speed() is called from ali_ircc_change_speed()
ali_ircc_fir_hard_xmit() under spin_lock_irqsave(&self->lock, flags);
ali_ircc_sir_hard_xmit() under spin_lock_irqsave(&self->lock, flags);
ali_ircc_net_ioctl() under spin_lock_irqsave(&self->lock, flags);
ali_ircc_dma_xmit_complete()
ali_ircc_fir_interrupt()
ali_ircc_interrupt() under spin_lock(&self->lock);
ali_ircc_sir_write_wakeup()
ali_ircc_sir_interrupt()
ali_ircc_interrupt() under spin_lock(&self->lock);
The patch removes spin_lock/unlock from ali_ircc_sir_change_speed().
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions