diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-12-06 04:14:13 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-12-06 04:14:13 -0500 |
commit | 451ec6ab310602515b361418debe93d00f67e273 (patch) | |
tree | 933cbbe7232ae6cb19986012e3162e65a184b77a /drivers/media/video/video-buf.c | |
parent | fe54ceda4dd71b6155f4a58cd2aad3a780cb347d (diff) | |
parent | 436b0f76f2cee6617f27a649637766628909dd5d (diff) | |
download | talos-op-linux-451ec6ab310602515b361418debe93d00f67e273.tar.gz talos-op-linux-451ec6ab310602515b361418debe93d00f67e273.zip |
Merge branch 'master'
Diffstat (limited to 'drivers/media/video/video-buf.c')
-rw-r--r-- | drivers/media/video/video-buf.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/media/video/video-buf.c b/drivers/media/video/video-buf.c index acfd3a103f35..9a6bf287e26a 100644 --- a/drivers/media/video/video-buf.c +++ b/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; @@ -817,10 +816,14 @@ ssize_t videobuf_read_one(struct videobuf_queue *q, if (NULL == q->read_buf) goto done; q->read_buf->memory = V4L2_MEMORY_USERPTR; + q->read_buf->bsize = count; /* preferred size */ 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); |