Details

[Home]

Issue of the Implementation # L0027

Brief

drivers/media/video/tlg2300/pd-video.c: double mutex_unlock

Detailed Description

Error path in file drivers/media/video/tlg2300/pd-video.c:

  • First mutex_unlock on &pd->lock in line 767 (in function that called from line 805)
  • Second in line 806
  •  805        pd_vidioc_s_fmt(pd, &f->fmt.pix);
     806        mutex_unlock(&pd->lock);
    

    Possible solutions

     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
    

    Component

    linux-kernel 2.6.37

    Accepted

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

    Status

    Fixed in kernel 2.6.39-rc1

    [Home]