diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2012-09-17 12:26:46 (GMT) |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-05 17:26:00 (GMT) |
commit | 1265f080d8f04ffe074bdf948bbec4cb9c420ee0 (patch) | |
tree | eb003dcabdd133fce542ce027a33cc8caf6beccf | |
parent | a25a7012ba65ef41fba809c605c4f7d0dc609a23 (diff) | |
download | linux-1265f080d8f04ffe074bdf948bbec4cb9c420ee0.tar.xz |
[media] cx231xx: replace ioctl by unlocked_ioctl
There was already a core lock, so why wasn't ioctl already replaced by
unlock_ioctl?
This patch switches to unlocked_ioctl.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-417.c | 15 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-video.c | 2 |
2 files changed, 7 insertions, 10 deletions
diff --git a/drivers/media/usb/cx231xx/cx231xx-417.c b/drivers/media/usb/cx231xx/cx231xx-417.c index a4091dd..15dd334 100644 --- a/drivers/media/usb/cx231xx/cx231xx-417.c +++ b/drivers/media/usb/cx231xx/cx231xx-417.c @@ -1633,12 +1633,8 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int i) dprintk(3, "enter vidioc_s_input() i=%d\n", i); - mutex_lock(&dev->lock); - video_mux(dev, i); - mutex_unlock(&dev->lock); - if (i >= 4) return -EINVAL; dev->input = i; @@ -1932,7 +1928,8 @@ static int mpeg_open(struct file *file) if (dev == NULL) return -ENODEV; - mutex_lock(&dev->lock); + if (mutex_lock_interruptible(&dev->lock)) + return -ERESTARTSYS; /* allocate + initialize per filehandle data */ fh = kzalloc(sizeof(*fh), GFP_KERNEL); @@ -1948,14 +1945,14 @@ static int mpeg_open(struct file *file) videobuf_queue_vmalloc_init(&fh->vidq, &cx231xx_qops, NULL, &dev->video_mode.slock, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_INTERLACED, - sizeof(struct cx231xx_buffer), fh, NULL); + sizeof(struct cx231xx_buffer), fh, &dev->lock); /* videobuf_queue_sg_init(&fh->vidq, &cx231xx_qops, &dev->udev->dev, &dev->ts1.slock, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_INTERLACED, sizeof(struct cx231xx_buffer), - fh, NULL); + fh, &dev->lock); */ @@ -2069,7 +2066,7 @@ static struct v4l2_file_operations mpeg_fops = { .read = mpeg_read, .poll = mpeg_poll, .mmap = mpeg_mmap, - .ioctl = video_ioctl2, + .unlocked_ioctl = video_ioctl2, }; static const struct v4l2_ioctl_ops mpeg_ioctl_ops = { @@ -2144,11 +2141,11 @@ static struct video_device *cx231xx_video_dev_alloc( if (NULL == vfd) return NULL; *vfd = *template; - vfd->minor = -1; snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)", dev->name, type, cx231xx_boards[dev->model].name); vfd->v4l2_dev = &dev->v4l2_dev; + vfd->lock = &dev->lock; vfd->release = video_device_release; return vfd; diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c index ae27c82..8d49640 100644 --- a/drivers/media/usb/cx231xx/cx231xx-video.c +++ b/drivers/media/usb/cx231xx/cx231xx-video.c @@ -2237,7 +2237,7 @@ static const struct v4l2_file_operations radio_fops = { .open = cx231xx_v4l2_open, .release = cx231xx_v4l2_close, .poll = v4l2_ctrl_poll, - .ioctl = video_ioctl2, + .unlocked_ioctl = video_ioctl2, }; static const struct v4l2_ioctl_ops radio_ioctl_ops = { |