diff options
author | Jia-Ju Bai <baijiaju1990@gmail.com> | 2018-04-11 05:14:10 +0300 |
---|---|---|
committer | Stefan Schmidt <stefan@osg.samsung.com> | 2018-04-23 21:56:23 +0300 |
commit | f9e628a6645ed4f42a15dfa3c5af45a916a228e4 (patch) | |
tree | 02e52473bc2968a3bc613a4ac1f9751a6bb0bba3 /drivers/net/ieee802154/atusb.c | |
parent | 94912e8df4e5005cb5fa3f3603741eb5e8bf3334 (diff) | |
download | linux-f9e628a6645ed4f42a15dfa3c5af45a916a228e4.tar.xz |
net: ieee802154: atusb: Replace GFP_ATOMIC with GFP_KERNEL in atusb_probe
atusb_probe() is never called in atomic context.
This function is only set as ".probe" in struct usb_driver.
Despite never getting called from atomic context,
atusb_probe() calls usb_alloc_urb() with GFP_ATOMIC,
which does not sleep for allocation.
GFP_ATOMIC is not necessary and can be replaced with GFP_KERNEL,
which can sleep and improve the possibility of sucessful allocation.
This is found by a static analysis tool named DCNS written by myself.
And I also manually check it.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
Diffstat (limited to 'drivers/net/ieee802154/atusb.c')
-rw-r--r-- | drivers/net/ieee802154/atusb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c index 9fb9b565a002..4f684cbcdc57 100644 --- a/drivers/net/ieee802154/atusb.c +++ b/drivers/net/ieee802154/atusb.c @@ -1045,7 +1045,7 @@ static int atusb_probe(struct usb_interface *interface, atusb->tx_dr.bRequest = ATUSB_TX; atusb->tx_dr.wValue = cpu_to_le16(0); - atusb->tx_urb = usb_alloc_urb(0, GFP_ATOMIC); + atusb->tx_urb = usb_alloc_urb(0, GFP_KERNEL); if (!atusb->tx_urb) goto fail; |