lkml.org 
[lkml]   [2011]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[24/35] [media] uvcvideo: Fix uvc_fixup_video_ctrl() format search
    2.6.33-longterm review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Stephan Lachowsky <stephan.lachowsky@maxim-ic.com>

    commit 38a66824d96de8aeeb915e6f46f0d3fe55828eb1 upstream.

    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.

    Signed-off-by: Stephan Lachowsky <stephan.lachowsky@maxim-ic.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/media/video/uvc/uvc_video.c | 14 +++++++++-----
    1 file changed, 9 insertions(+), 5 deletions(-)

    --- a/drivers/media/video/uvc/uvc_video.c
    +++ b/drivers/media/video/uvc/uvc_video.c
    @@ -64,15 +64,19 @@ int uvc_query_ctrl(struct uvc_device *de
    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) {



    \
     
     \ /
      Last update: 2011-03-26 01:11    [W:5.076 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site