]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/meta-ti-glsdk.git/blob - recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch
linux-ti33x-psp 3.2: update to 3.2.18
[glsdk/meta-ti-glsdk.git] / recipes-kernel / linux / linux-ti33x-psp-3.2 / 3.2.17 / 0116-usb-gadget-uvc-uvc_request_data-length-field-must-be.patch
1 From c50d42c9d902b99077153d177a0fba885220552f Mon Sep 17 00:00:00 2001
2 From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
3 Date: Tue, 24 Apr 2012 11:29:42 +0200
4 Subject: [PATCH 116/165] usb gadget: uvc: uvc_request_data::length field must
5  be signed
7 commit 6f6543f53f9ce136e01d7114bf6f0818ca54fb41 upstream.
9 The field is used to pass the UVC request data length, but can also be
10 used to signal an error when setting it to a negative value. Switch from
11 unsigned int to __s32.
13 Reported-by: Fernandez Gonzalo <gfernandez@copreci.es>
14 Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
15 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
16 Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
17 ---
18  drivers/usb/gadget/uvc.h      |    2 +-
19  drivers/usb/gadget/uvc_v4l2.c |    2 +-
20  2 files changed, 2 insertions(+), 2 deletions(-)
22 diff --git a/drivers/usb/gadget/uvc.h b/drivers/usb/gadget/uvc.h
23 index bc78c60..ca4e03a 100644
24 --- a/drivers/usb/gadget/uvc.h
25 +++ b/drivers/usb/gadget/uvc.h
26 @@ -28,7 +28,7 @@
27  
28  struct uvc_request_data
29  {
30 -       unsigned int length;
31 +       __s32 length;
32         __u8 data[60];
33  };
34  
35 diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
36 index f6e083b..54d7ca5 100644
37 --- a/drivers/usb/gadget/uvc_v4l2.c
38 +++ b/drivers/usb/gadget/uvc_v4l2.c
39 @@ -39,7 +39,7 @@ uvc_send_response(struct uvc_device *uvc, struct uvc_request_data *data)
40         if (data->length < 0)
41                 return usb_ep_set_halt(cdev->gadget->ep0);
42  
43 -       req->length = min(uvc->event_length, data->length);
44 +       req->length = min_t(unsigned int, uvc->event_length, data->length);
45         req->zero = data->length < uvc->event_length;
46         req->dma = DMA_ADDR_INVALID;
47  
48 -- 
49 1.7.7.6