lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 3 Mar 2017 13:17:15 +0200
From:   Roger Quadros <rogerq@...com>
To:     <laurent.pinchart@...asonboard.com>
CC:     <balbi@...nel.org>, <b-liu@...com>, <nsekhar@...com>,
        <linux-usb@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
        Roger Quadros <rogerq@...com>
Subject: [PATCH] uvc-gadget: Fix Set Interface (alternate setting) response behaviour

On alternate setting change, webcam gadget sends us a UVC_EVENT_STREAMON
or UVC_EVENT_STREAMOFF event. It expects delayed status response on
STREAMON event only but doesn't expect us to send that response over USB.
It sends the delayed response when we issue the VIDIOC_STREAMON ioctl.

So we must not send UVCIOC_SEND_RESPONSE ioctl in these cases that too
with invalid response length.

Without this, the ISO streaming doesn't work if host application
(e.g. luvcview) is closed and restarted.
On dwc3 gadget controller it was resulting in Buffer Expiry error on
the ISO endpoint.

Signed-off-by: Roger Quadros <rogerq@...com>
---
 uvc-gadget.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/uvc-gadget.c b/uvc-gadget.c
index 9ef315c..4d59ab8 100644
--- a/uvc-gadget.c
+++ b/uvc-gadget.c
@@ -597,12 +597,12 @@ uvc_events_process(struct uvc_device *dev)
 	case UVC_EVENT_STREAMON:
 		uvc_video_reqbufs(dev, 4);
 		uvc_video_stream(dev, 1);
-		break;
+		return;
 
 	case UVC_EVENT_STREAMOFF:
 		uvc_video_stream(dev, 0);
 		uvc_video_reqbufs(dev, 0);
-		break;
+		return;
 	}
 
 	ioctl(dev->fd, UVCIOC_SEND_RESPONSE, &resp);
-- 
2.7.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ