diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 07:59:56 -0700 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 07:59:56 -0700 |
commit | 8dd3ceb79cec4a833fbc9fd654b7e71e9548d331 (patch) | |
tree | 5f58b15dcaa8d00e2e3d40ec3075b0a68a3fec5d /linux/drivers | |
parent | fd7aa03c43fa93b538f714c99c98f4d6976840b1 (diff) | |
download | mediapointer-dvb-s2-8dd3ceb79cec4a833fbc9fd654b7e71e9548d331.tar.gz mediapointer-dvb-s2-8dd3ceb79cec4a833fbc9fd654b7e71e9548d331.tar.bz2 |
patch: s2255drv driver removal problem fixed
From: Dean Anderson <dean@sensoray.com>
This patch fixes kfree problem on driver removal, fixes streamoff problem
and removes unnecessary videobuf_waiton from free_buffer function.
Signed-off-by: Dean Anderson <dean@sensoray.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'linux/drivers')
-rw-r--r-- | linux/drivers/media/video/s2255drv.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/linux/drivers/media/video/s2255drv.c b/linux/drivers/media/video/s2255drv.c index edfac2f9e..c13aa2cc8 100644 --- a/linux/drivers/media/video/s2255drv.c +++ b/linux/drivers/media/video/s2255drv.c @@ -723,7 +723,6 @@ static void free_buffer(struct videobuf_queue *vq, struct s2255_buffer *buf) { dprintk(4, "%s\n", __func__); - videobuf_waiton(&buf->vb, 0, 0); videobuf_vmalloc_free(&buf->vb); buf->vb.state = VIDEOBUF_NEEDS_INIT; } @@ -1325,7 +1324,6 @@ static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i) static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type i) { - int res; struct s2255_fh *fh = priv; struct s2255_dev *dev = fh->dev; @@ -1339,9 +1337,7 @@ static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type i) return -EINVAL; } s2255_stop_acquire(dev, fh->channel); - res = videobuf_streamoff(&fh->vb_vidq); - if (res < 0) - return res; + videobuf_streamoff(&fh->vb_vidq); res_free(dev, fh); return 0; } @@ -1708,13 +1704,13 @@ static void s2255_destroy(struct kref *kref) kfree(dev->fw_data); usb_put_dev(dev->udev); dprintk(1, "%s", __func__); - kfree(dev); while (!list_empty(&s2255_devlist)) { list = s2255_devlist.next; list_del(list); } mutex_unlock(&dev->open_lock); + kfree(dev); } static int s2255_close(struct file *file) |