From: Mauro Carvalho Chehab Date: Sat, 18 Sep 2010 11:35:57 +0000 (-0300) Subject: V4L/DVB: bttv: Fix mutex unbalance at bttv_poll X-Git-Tag: MMI-PSA29.97-13-9~21911^2~353 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ca960bfe136844952041d2e7dc030a6d4d5c7469;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git V4L/DVB: bttv: Fix mutex unbalance at bttv_poll Don't do double mutex_unlock when reading a stream at bttv_poll. Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index fcafe2f1e5cf..d74dfa6d1a55 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c @@ -3162,15 +3162,14 @@ static unsigned int bttv_poll(struct file *file, poll_table *wait) return videobuf_poll_stream(file, &fh->vbi, wait); } + mutex_lock(&fh->cap.vb_lock); if (check_btres(fh,RESOURCE_VIDEO_STREAM)) { - mutex_lock(&fh->cap.vb_lock); /* streaming capture */ if (list_empty(&fh->cap.stream)) goto err; buf = list_entry(fh->cap.stream.next,struct bttv_buffer,vb.stream); } else { /* read() capture */ - mutex_lock(&fh->cap.vb_lock); if (NULL == fh->cap.read_buf) { /* need to capture a new frame */ if (locked_btres(fh->btv,RESOURCE_VIDEO_STREAM)) @@ -3188,7 +3187,6 @@ static unsigned int bttv_poll(struct file *file, poll_table *wait) fh->cap.ops->buf_queue(&fh->cap,fh->cap.read_buf); fh->cap.read_off = 0; } - mutex_unlock(&fh->cap.vb_lock); buf = (struct bttv_buffer*)fh->cap.read_buf; }