Details

[Home]

Issue of the Implementation # L0041

Brief

serqt_usb2: fix sleeping with spinlock held

Detailed Description

qt_break() calls usb_control_msg() with spinlock held, while usb_control_msg() calls kmalloc(GFP_NOIO) and indirectly usb_alloc_urb(GFP_NOIO). The same is true for qt_tiocmget() and qt_tiocmset(). Also call to wait_for_completion_timeout() in the usb_control_msg() callchain shows that a spinlock is not a good thing to be using here.

Possible solutions

Replace spinlock with mutex.

Component

linux-kernel 3.1

Accepted

https://lkml.org/lkml/2011/8/9/23
commit

Status

Fixed in kernel 3.2-rc1

[Home]