Подробности
[В начало]
Проблема в реализации № 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
Список трасс
[В начало]
»