mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] usb: gadget: uvc_video: unlock before submitting a request to ep
@ 2023-11-02  7:11 Piyush Mehta
  2023-11-02  9:05 ` Sergey Shtylyov
  2023-11-02 12:00 ` Dan Scally
  0 siblings, 2 replies; 14+ messages in thread
From: Piyush Mehta @ 2023-11-02  7:11 UTC (permalink / raw)
  To: laurent.pinchart, dan.scally, michal.simek, gregkh
  Cc: siva.durga.prasad.paladugu, radhey.shyam.pandey, linux-usb,
	linux-kernel, Piyush Mehta

There could be chances where the usb_ep_queue() could fail and trigger
complete() handler with error status. In this case, if usb_ep_queue()
is called with lock held and the triggered complete() handler is waiting
for the same lock to be cleared could result in a deadlock situation and
could result in system hang. To aviod this scenerio, call usb_ep_queue()
with lock removed. This patch does the same.

Signed-off-by: Piyush Mehta <piyush.mehta@amd.com>
---
 drivers/usb/gadget/function/uvc_video.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
index 91af3b1ef0d4..0a5d9ac145e7 100644
--- a/drivers/usb/gadget/function/uvc_video.c
+++ b/drivers/usb/gadget/function/uvc_video.c
@@ -460,11 +460,12 @@ static void uvcg_video_pump(struct work_struct *work)
 			req->no_interrupt = 1;
 		}
 
-		/* Queue the USB request */
-		ret = uvcg_video_ep_queue(video, req);
 		spin_unlock_irqrestore(&queue->irqlock, flags);
 
+		/* Queue the USB request */
+		ret = uvcg_video_ep_queue(video, req);
 		if (ret < 0) {
+			usb_ep_set_halt(video->ep);
 			uvcg_queue_cancel(queue, 0);
 			break;
 		}
-- 
2.25.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-05-17  2:42 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-02  7:11 [PATCH] usb: gadget: uvc_video: unlock before submitting a request to ep Piyush Mehta
2023-11-02  9:05 ` Sergey Shtylyov
2023-11-02 12:00 ` Dan Scally
2023-11-08 11:48   ` Kuen-Han Tsai
2023-11-08 14:19     ` Dan Scally
2023-11-16  9:28     ` Dan Scally
2023-11-17  1:45       ` Thinh Nguyen
2023-11-17  3:28         ` Thinh Nguyen
2024-01-10  9:14           ` Pandey, Radhey Shyam
2024-01-11  1:21             ` Thinh Nguyen
2024-01-19  2:15             ` Thinh Nguyen
2024-01-29 10:08               ` Pandey, Radhey Shyam
2024-05-14  7:04                 ` Pandey, Radhey Shyam
2024-05-17  2:42                   ` Kuen-Han Tsai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®