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]
»