From aa83a61ffb3b7eba6b07ed7e07f07f7ac4763d25 Mon Sep 17 00:00:00 2001 From: "Nickolay V. Shmyrev" Date: Thu, 1 Dec 2005 00:51:32 -0800 Subject: [PATCH] --- yaml --- r: 14859 b: refs/heads/master c: 50ab5edc973c979e8f620e09d20b96761d271894 h: refs/heads/master i: 14857: b0626e251d0fb4562fd49c509a2dba47031dc5f9 14855: febf2f72835a300351fc64016f9bf1206fd53aee v: v3 --- [refs] | 2 +- trunk/drivers/media/video/bttv-driver.c | 2 ++ trunk/drivers/media/video/video-buf.c | 8 +++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index cd21903d7c3c..b65976f70fb5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3b86b9999deb04bbfbb20e6b6fe1119a4bf0ff34 +refs/heads/master: 50ab5edc973c979e8f620e09d20b96761d271894 diff --git a/trunk/drivers/media/video/bttv-driver.c b/trunk/drivers/media/video/bttv-driver.c index 5bc522259d36..f9d581cd31db 100644 --- a/trunk/drivers/media/video/bttv-driver.c +++ b/trunk/drivers/media/video/bttv-driver.c @@ -2952,6 +2952,8 @@ static unsigned int bttv_poll(struct file *file, poll_table *wait) fh->cap.read_buf->memory = V4L2_MEMORY_USERPTR; field = videobuf_next_field(&fh->cap); if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,field)) { + kfree (fh->cap.read_buf); + fh->cap.read_buf = NULL; up(&fh->cap.lock); return POLLERR; } diff --git a/trunk/drivers/media/video/video-buf.c b/trunk/drivers/media/video/video-buf.c index acfd3a103f35..bd34f81dbc69 100644 --- a/trunk/drivers/media/video/video-buf.c +++ b/trunk/drivers/media/video/video-buf.c @@ -753,10 +753,9 @@ videobuf_read_zerocopy(struct videobuf_queue *q, char __user *data, int retval; /* setup stuff */ - retval = -ENOMEM; q->read_buf = videobuf_alloc(q->msize); if (NULL == q->read_buf) - goto done; + return -ENOMEM; q->read_buf->memory = V4L2_MEMORY_USERPTR; q->read_buf->baddr = (unsigned long)data; @@ -819,8 +818,11 @@ ssize_t videobuf_read_one(struct videobuf_queue *q, q->read_buf->memory = V4L2_MEMORY_USERPTR; field = videobuf_next_field(q); retval = q->ops->buf_prepare(q,q->read_buf,field); - if (0 != retval) + if (0 != retval) { + kfree (q->read_buf); + q->read_buf = NULL; goto done; + } spin_lock_irqsave(q->irqlock,flags); q->ops->buf_queue(q,q->read_buf); spin_unlock_irqrestore(q->irqlock,flags);