Details

[Home]

Issue of the Implementation # L0007

Brief

drivers/char/isicom.c: Sleeping function called from invalid context

Detailed Description

Driver drivers/char/isicom.c might sleep in atomic  context, because it calls tty_port_xmit_buf under spin_lock. ./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);
...
Path to might_sleep macro from isicom_hangup:
  1. isicom_hangup calls spin_lock_irqsave (drivers/char/isicom.c:1315) and then calls isicom_shutdown_port.
  2. isiscom_shutdown_port calls tty_port_free_xmit_buf at drivers/char/isicom.c:906
  3. tty_port_free_xmit_buf calls mutex_lock at srivers/char/tty_port:48

Component

linux-kernel 2.6.31

Accepted

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

Status

Fixed in kernel 2.6.33-rc1

[Home]