While looping in the pump, there are more conditions to stop handling requests. The streamoff event that will disable the endpoint and the vb2_queue is called early. We add the variables into account. Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> --- drivers/usb/gadget/function/uvc_video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c index 8b3116d48d2bd8..b1d7083d07846e 100644 --- a/drivers/usb/gadget/function/uvc_video.c +++ b/drivers/usb/gadget/function/uvc_video.c @@ -368,7 +368,7 @@ static void uvcg_video_pump(struct work_struct *work) unsigned long flags; int ret; - while (video->ep->enabled) { + while (video->ep->enabled || queue->queue.streaming || video->uvc->streamon) { /* Retrieve the first available USB request, protected by the * request lock. */ -- 2.30.2