patch "usb: cdc-wdm: Fix a sleep-in-atomic-context bug in" added to usb-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
usb: cdc-wdm: Fix a sleep-in-atomic-context bug in
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
6e22e3af7bb3a7b9dc53cb4687659f6e63fca427Mon Sep 17 00:00:00 2001
From: Jia-Ju Bai <[email protected]>
Date: Sat, 1 Sep 2018 16:12:10 +0800
Subject: usb: cdc-wdm: Fix a sleep-in-atomic-context bug in
service_outstanding_interrupt()
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.
--- drivers/usb/class/cdc-wdm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/class/cdc-wdm.c +1 -1
@@ -460,7 +460,7 @@ static int service_outstanding_interrupt(struct wdm_device *desc)set_bit (WDM_RESPONDING , &desc->flags);spin_unlock_irq (&desc->iuspin); - rv =usb_submit_urb (desc->response,GFP_KERNEL ); + rv =usb_submit_urb (desc->response,GFP_ATOMIC );spin_lock_irq (&desc->iuspin);if (rv) { dev_err(&desc->intf->dev,
Signature · 1 line
2.18.0