Подробности

[В начало]

Проблема в реализации № L0007

Краткое описание

drivers/char/isicom.c: Вызов функции might_sleep из контекста spin_lock_irqsave/spin_unlock_irqrestore

Подробное описание

В драйвере drivers/char/isicom.c содержится вызов функции might_sleep в атомарном контексте. Функция tty_port_xmit_buf вызывается после spin_lock_irqsave. ./drivers/char/isicom.c:

1307 static void isicom_hangup(struct tty_struct *tty)
1308 {
...
1315         spin_lock_irqsave(&port->card->card_lock, flags);
1316         isicom_shutdown_port(port);
...
Путь к might_sleep из isicom_hangup:
  1. isicom_hangup вызывает spin_lock_irqsave (drivers/char/isicom.c:1315) и затем вызывает isicom_shutdown_port.
  2. isiscom_shutdown_port вызывает tty_port_free_xmit_buf в drivers/char/isicom.c:906
  3. tty_port_free_xmit_buf вызывает mutex_lock в srivers/char/tty_port:48

Компонент

linux-kernel 2.6.31

Принято

http://lkml.org/lkml/2009/10/7/246
commit

Статус

Исправлено в ядре 2.6.33-rc1

[В начало]