]> www.infradead.org Git - users/dwmw2/linux.git/commit
usb: cdc-wdm: Fix a sleep-in-atomic-context bug in service_outstanding_interrupt()
authorJia-Ju Bai <baijiaju1990@gmail.com>
Sat, 1 Sep 2018 08:12:10 +0000 (16:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2018 06:39:33 +0000 (08:39 +0200)
commitc705bfe3c3d6b2427d399f0d99cd221b7b51f79c
treeeeb7d7111867662766a677613af8685731d816c8
parentcb55532b9e64514c613e195ac662a3633d730cc3
usb: cdc-wdm: Fix a sleep-in-atomic-context bug in service_outstanding_interrupt()

commit 6e22e3af7bb3a7b9dc53cb4687659f6e63fca427 upstream.

wdm_in_callback() is a completion handler function for the USB driver.
So it should not sleep. But it calls service_outstanding_interrupt(),
which calls usb_submit_urb() with GFP_KERNEL.

To fix this bug, GFP_KERNEL is replaced with GFP_ATOMIC.

This bug is found by my static analysis tool DSAC.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/cdc-wdm.c