* [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search
@ 2011-01-28 2:04 Stephan Lachowsky
2011-02-19 12:35 ` Laurent Pinchart
0 siblings, 1 reply; 5+ messages in thread
From: Stephan Lachowsky @ 2011-01-28 2:04 UTC (permalink / raw)
To: linux-media
The scheme used to index format in uvc_fixup_video_ctrl() is not robust:
format index is based on descriptor ordering, which does not necessarily
match bFormatIndex ordering. Searching for first matching format will
prevent uvc_fixup_video_ctrl() from using the wrong format/frame to make
adjustments.
---
drivers/media/video/uvc/uvc_video.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
index 5673d67..545c029 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -89,15 +89,19 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
struct uvc_streaming_control *ctrl)
{
- struct uvc_format *format;
+ struct uvc_format *format = NULL;
struct uvc_frame *frame = NULL;
unsigned int i;
- if (ctrl->bFormatIndex <= 0 ||
- ctrl->bFormatIndex > stream->nformats)
- return;
+ for (i = 0; i < stream->nformats; ++i) {
+ if (stream->format[i].index == ctrl->bFormatIndex) {
+ format = &stream->format[i];
+ break;
+ }
+ }
- format = &stream->format[ctrl->bFormatIndex - 1];
+ if (format == NULL)
+ return;
for (i = 0; i < format->nframes; ++i) {
if (format->frame[i].bFrameIndex == ctrl->bFrameIndex) {
--
1.7.3.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search
2011-01-28 2:04 [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search Stephan Lachowsky
@ 2011-02-19 12:35 ` Laurent Pinchart
2011-02-20 0:46 ` Stephan Lachowsky
2012-08-07 8:37 ` Stephan Lachowsky
0 siblings, 2 replies; 5+ messages in thread
From: Laurent Pinchart @ 2011-02-19 12:35 UTC (permalink / raw)
To: Stephan Lachowsky; +Cc: linux-media
Hi Stephan,
On Friday 28 January 2011 03:04:33 Stephan Lachowsky wrote:
> The scheme used to index format in uvc_fixup_video_ctrl() is not robust:
> format index is based on descriptor ordering, which does not necessarily
> match bFormatIndex ordering. Searching for first matching format will
> prevent uvc_fixup_video_ctrl() from using the wrong format/frame to make
> adjustments.
Thanks for the patch. It's missing your Signed-off-by line, can I add it ?
> ---
> drivers/media/video/uvc/uvc_video.c | 14 +++++++++-----
> 1 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/video/uvc/uvc_video.c
> b/drivers/media/video/uvc/uvc_video.c index 5673d67..545c029 100644
> --- a/drivers/media/video/uvc/uvc_video.c
> +++ b/drivers/media/video/uvc/uvc_video.c
> @@ -89,15 +89,19 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query,
> __u8 unit, static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
> struct uvc_streaming_control *ctrl)
> {
> - struct uvc_format *format;
> + struct uvc_format *format = NULL;
> struct uvc_frame *frame = NULL;
> unsigned int i;
>
> - if (ctrl->bFormatIndex <= 0 ||
> - ctrl->bFormatIndex > stream->nformats)
> - return;
> + for (i = 0; i < stream->nformats; ++i) {
> + if (stream->format[i].index == ctrl->bFormatIndex) {
> + format = &stream->format[i];
> + break;
> + }
> + }
>
> - format = &stream->format[ctrl->bFormatIndex - 1];
> + if (format == NULL)
> + return;
>
> for (i = 0; i < format->nframes; ++i) {
> if (format->frame[i].bFrameIndex == ctrl->bFrameIndex) {
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search
2011-02-19 12:35 ` Laurent Pinchart
@ 2011-02-20 0:46 ` Stephan Lachowsky
2012-08-07 8:37 ` Stephan Lachowsky
1 sibling, 0 replies; 5+ messages in thread
From: Stephan Lachowsky @ 2011-02-20 0:46 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: linux-media
On Feb 19, 2011, at 4:35 AM, Laurent Pinchart wrote:
>
> Thanks for the patch. It's missing your Signed-off-by line, can I add it ?
You may.
Signed-off-by: Stephan Lachowsky <stephan.lachowsky@maxim-ic.com>
--
Stephan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search
2011-02-19 12:35 ` Laurent Pinchart
2011-02-20 0:46 ` Stephan Lachowsky
@ 2012-08-07 8:37 ` Stephan Lachowsky
1 sibling, 0 replies; 5+ messages in thread
From: Stephan Lachowsky @ 2012-08-07 8:37 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: linux-media
Hi Laurent,
On 19/02/11 12:35, Laurent Pinchart wrote:
> Hi Stephan,
>
> On Friday 28 January 2011 03:04:33 Stephan Lachowsky wrote:
>> The scheme used to index format in uvc_fixup_video_ctrl() is not robust:
>> format index is based on descriptor ordering, which does not necessarily
>> match bFormatIndex ordering. Searching for first matching format will
>> prevent uvc_fixup_video_ctrl() from using the wrong format/frame to make
>> adjustments.
> Thanks for the patch. It's missing your Signed-off-by line, can I add it ?
Sorry for the late reply, you certainly may.
>> ---
>> drivers/media/video/uvc/uvc_video.c | 14 +++++++++-----
>> 1 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/media/video/uvc/uvc_video.c
>> b/drivers/media/video/uvc/uvc_video.c index 5673d67..545c029 100644
>> --- a/drivers/media/video/uvc/uvc_video.c
>> +++ b/drivers/media/video/uvc/uvc_video.c
>> @@ -89,15 +89,19 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query,
>> __u8 unit, static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
>> struct uvc_streaming_control *ctrl)
>> {
>> - struct uvc_format *format;
>> + struct uvc_format *format = NULL;
>> struct uvc_frame *frame = NULL;
>> unsigned int i;
>>
>> - if (ctrl->bFormatIndex <= 0 ||
>> - ctrl->bFormatIndex > stream->nformats)
>> - return;
>> + for (i = 0; i < stream->nformats; ++i) {
>> + if (stream->format[i].index == ctrl->bFormatIndex) {
>> + format = &stream->format[i];
>> + break;
>> + }
>> + }
>>
>> - format = &stream->format[ctrl->bFormatIndex - 1];
>> + if (format == NULL)
>> + return;
>>
>> for (i = 0; i < format->nframes; ++i) {
>> if (format->frame[i].bFrameIndex == ctrl->bFrameIndex) {
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search
@ 2011-01-28 1:51 Stephan Lachowsky
0 siblings, 0 replies; 5+ messages in thread
From: Stephan Lachowsky @ 2011-01-28 1:51 UTC (permalink / raw)
To: linux-media
The scheme used to index format in uvc_fixup_video_ctrl() is not robust:
format index is based on descriptor ordering, which does not necessarily
match bFormatIndex ordering. Searching for first matching format will
prevent uvc_fixup_video_ctrl() from using the wrong format/frame to make
adjustments.
---
drivers/media/video/uvc/uvc_video.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/media/video/uvc/uvc_video.c b/drivers/media/video/uvc/uvc_video.c
index 5673d67..545c029 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -89,15 +89,19 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
struct uvc_streaming_control *ctrl)
{
- struct uvc_format *format;
+ struct uvc_format *format = NULL;
struct uvc_frame *frame = NULL;
unsigned int i;
- if (ctrl->bFormatIndex <= 0 ||
- ctrl->bFormatIndex > stream->nformats)
- return;
+ for (i = 0; i < stream->nformats; ++i) {
+ if (stream->format[i].index == ctrl->bFormatIndex) {
+ format = &stream->format[i];
+ break;
+ }
+ }
- format = &stream->format[ctrl->bFormatIndex - 1];
+ if (format == NULL)
+ return;
for (i = 0; i < format->nframes; ++i) {
if (format->frame[i].bFrameIndex == ctrl->bFrameIndex) {
--
1.7.3.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-08-07 8:51 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-28 2:04 [PATCH] uvcvideo: Fix uvc_fixup_video_ctrl() format search Stephan Lachowsky
2011-02-19 12:35 ` Laurent Pinchart
2011-02-20 0:46 ` Stephan Lachowsky
2012-08-07 8:37 ` Stephan Lachowsky
-- strict thread matches above, loose matches on Subject: below --
2011-01-28 1:51 Stephan Lachowsky
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.