Подробности
[В начало]
Проблема в реализации № L0010
Краткое описание
drivers/net/irda/ali-ircc.c: Двойная блокировка spin_lock_irqsave
Подробное описание
ali_ircc_sir_change_speed() всегда вызывается с захваченным self->lock, поэтому захват спинлока внутри функции ведёт к блокировке. Граф вызовов выглядит следующим образом:
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);
Компонент
linux-kernel 2.6.31
Принято
http://lkml.org/lkml/2009/10/8/113
https://lkml.org/lkml/2015/9/11/613
commit
Статус
Исправлено в ядре 4.3-rc3
Список трасс
[В начало]
»