Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7732a32 authored by Dean Anderson's avatar Dean Anderson Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (11392): patch: s2255drv driver removal problem fixed



This patch fixes kfree problem on driver removal, fixes streamoff problem
and removes unnecessary videobuf_waiton from free_buffer function.

Signed-off-by: default avatarDean Anderson <dean@sensoray.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 746ce939
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -722,7 +722,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;
}
@@ -1324,7 +1323,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;

@@ -1338,9 +1336,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;
}
@@ -1707,13 +1703,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)