Подробности

[В начало]

Проблема в реализации № L0027

Краткое описание

drivers/media/video/tlg2300/pd-video.c: двойной mutex_unlock

Подробное описание

В файле drivers/media/video/tlg2300/pd-video.c:

  • Первый mutex_unlock(&pd->lock) в строке 767 (в функция, которая была вызвана в строке 805)
  • Второй в строке 806
  •  805        pd_vidioc_s_fmt(pd, &f->fmt.pix);
     806        mutex_unlock(&pd->lock);
    

    Способы устранения

     drivers/media/video/tlg2300/pd-video.c |    4 +---
     1 files changed, 1 insertions(+), 3 deletions(-)
    
    diff --git a/drivers/media/video/tlg2300/pd-video.c b/drivers/media/video/tlg2300/pd-video.c
    index df33a1d..a794ae6 100644
    --- a/drivers/media/video/tlg2300/pd-video.c
    +++ b/drivers/media/video/tlg2300/pd-video.c
    @@ -764,10 +764,8 @@ static int pd_vidioc_s_fmt(struct poseidon *pd, struct v4l2_pix_format *pix)
            }
            ret |= send_set_req(pd, VIDEO_ROSOLU_SEL,
                                    vid_resol, &cmd_status);
    -       if (ret || cmd_status) {
    -               mutex_unlock(&pd->lock);
    +       if (ret || cmd_status)
                    return -EBUSY;
    -       }
     
            pix_def->pixelformat = pix->pixelformat; /* save it */
            pix->height = (context->tvnormid & V4L2_STD_525_60) ?  480 : 576;
    -- 
    1.7.1
    

    Компонент

    linux-kernel 2.6.37

    Принято

    https://lkml.org/lkml/2011/1/25/478
    commit

    Статус

    Исправлено в ядре 2.6.39-rc1

    [В начало]