usb: gadget: uvc: Use GFP_ATOMIC under spin lock
authorCyril Roelandt <tipecaml@gmail.com>
Fri, 1 Mar 2013 19:46:32 +0000 (20:46 +0100)
committerFelipe Balbi <balbi@ti.com>
Mon, 18 Mar 2013 09:18:22 +0000 (11:18 +0200)
Found using the following semantic patch:
<spml>
@@
@@
spin_lock_irqsave(...);
... when != spin_unlock_irqrestore(...);
* GFP_KERNEL
</spml>

Signed-off-by: Cyril Roelandt <tipecaml@gmail.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Bhupesh Sharma <bhupesh.sharma@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/uvc_video.c

index fac99a97b7824e3a3cb9d40e055b0a6b0f8f87b6..ec4bcc4a22909e819292648daf4da5c67340f119 100644 (file)
@@ -314,7 +314,8 @@ uvc_video_pump(struct uvc_video *video)
                video->encode(req, video, buf);
 
                /* Queue the USB request */
-               if ((ret = usb_ep_queue(video->ep, req, GFP_KERNEL)) < 0) {
+               ret = usb_ep_queue(video->ep, req, GFP_ATOMIC);
+               if (ret < 0) {
                        printk(KERN_INFO "Failed to queue request (%d)\n", ret);
                        usb_ep_set_halt(video->ep);
                        spin_unlock_irqrestore(&video->queue.irqlock, flags);