diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2009-11-25 10:00:27 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-05 15:42:12 -0500 |
commit | fd3e921739aff709bbaae6d75d9f64542f47c850 (patch) | |
tree | bc0f0617d35de862494b79dff43e6322b84db5e3 /drivers/media/video/uvc | |
parent | 6241d8ca1dc27356180011dff4d93a3c5b3cbd76 (diff) |
V4L/DVB (13504): uvcvideo: Fix extension units parsing
The bNrInPins field is an 8 bit integer, not a 16 bit integer.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/uvc')
-rw-r--r-- | drivers/media/video/uvc/uvc_driver.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c index db28311d6ec8..8d51a6a130b0 100644 --- a/drivers/media/video/uvc/uvc_driver.c +++ b/drivers/media/video/uvc/uvc_driver.c | |||
@@ -844,7 +844,7 @@ static int uvc_parse_vendor_control(struct uvc_device *dev, | |||
844 | unit->type = UVC_VC_EXTENSION_UNIT; | 844 | unit->type = UVC_VC_EXTENSION_UNIT; |
845 | memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); | 845 | memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); |
846 | unit->extension.bNumControls = buffer[20]; | 846 | unit->extension.bNumControls = buffer[20]; |
847 | unit->extension.bNrInPins = get_unaligned_le16(&buffer[21]); | 847 | unit->extension.bNrInPins = buffer[21]; |
848 | unit->extension.baSourceID = (__u8 *)unit + sizeof *unit; | 848 | unit->extension.baSourceID = (__u8 *)unit + sizeof *unit; |
849 | memcpy(unit->extension.baSourceID, &buffer[22], p); | 849 | memcpy(unit->extension.baSourceID, &buffer[22], p); |
850 | unit->extension.bControlSize = buffer[22+p]; | 850 | unit->extension.bControlSize = buffer[22+p]; |
@@ -1108,7 +1108,7 @@ static int uvc_parse_standard_control(struct uvc_device *dev, | |||
1108 | unit->type = buffer[2]; | 1108 | unit->type = buffer[2]; |
1109 | memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); | 1109 | memcpy(unit->extension.guidExtensionCode, &buffer[4], 16); |
1110 | unit->extension.bNumControls = buffer[20]; | 1110 | unit->extension.bNumControls = buffer[20]; |
1111 | unit->extension.bNrInPins = get_unaligned_le16(&buffer[21]); | 1111 | unit->extension.bNrInPins = buffer[21]; |
1112 | unit->extension.baSourceID = (__u8 *)unit + sizeof *unit; | 1112 | unit->extension.baSourceID = (__u8 *)unit + sizeof *unit; |
1113 | memcpy(unit->extension.baSourceID, &buffer[22], p); | 1113 | memcpy(unit->extension.baSourceID, &buffer[22], p); |
1114 | unit->extension.bControlSize = buffer[22+p]; | 1114 | unit->extension.bControlSize = buffer[22+p]; |