All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.