The patch number 11235 was added via Mauro Carvalho Chehab <[email protected]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        Linux Media Mailing List <[email protected]>

------

From: Stoyan Gaydarov  <[email protected]>
changed ioctls to unlocked


Signed-off-by: Stoyan Gaydarov <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>


---

 linux/drivers/media/dvb/bt8xx/dst_ca.c |    9 ++++++---
 linux/drivers/media/video/dabusb.c     |   13 +++++++++----
 2 files changed, 15 insertions(+), 7 deletions(-)

diff -r 2276e777f950 -r a0305683dd02 linux/drivers/media/dvb/bt8xx/dst_ca.c
--- a/linux/drivers/media/dvb/bt8xx/dst_ca.c    Thu Mar 26 22:17:48 2009 -0300
+++ b/linux/drivers/media/dvb/bt8xx/dst_ca.c    Tue Mar 24 21:12:47 2009 +0000
@@ -648,8 +648,10 @@ free_mem_and_exit:
        return result;
 }
 
-static int dst_ca_ioctl(struct inode *inode, struct file *file, unsigned int 
cmd, unsigned long ioctl_arg)
-{
+static long dst_ca_ioctl(struct file *file, unsigned int cmd, unsigned long 
ioctl_arg)
+{
+       lock_kernel();
+
        struct dvb_device* dvbdev = (struct dvb_device*) file->private_data;
        struct dst_state* state = (struct dst_state*) dvbdev->priv;
        struct ca_slot_info *p_ca_slot_info;
@@ -743,6 +745,7 @@ static int dst_ca_ioctl(struct inode *in
        kfree (p_ca_slot_info);
        kfree (p_ca_caps);
 
+       unlock_kernel();
        return result;
 }
 
@@ -780,7 +783,7 @@ static ssize_t dst_ca_write(struct file 
 
 static const struct file_operations dst_ca_fops = {
        .owner = THIS_MODULE,
-       .ioctl = dst_ca_ioctl,
+       .unlocked_ioctl = dst_ca_ioctl,
        .open = dst_ca_open,
        .release = dst_ca_release,
        .read = dst_ca_read,
diff -r 2276e777f950 -r a0305683dd02 linux/drivers/media/video/dabusb.c
--- a/linux/drivers/media/video/dabusb.c        Thu Mar 26 22:17:48 2009 -0300
+++ b/linux/drivers/media/video/dabusb.c        Tue Mar 24 21:12:47 2009 +0000
@@ -734,8 +734,9 @@ static int dabusb_release (struct inode 
        return 0;
 }
 
-static int dabusb_ioctl (struct inode *inode, struct file *file, unsigned int 
cmd, unsigned long arg)
-{
+static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long 
arg)
+{
+       lock_kernel();
        pdabusb_t s = (pdabusb_t) file->private_data;
        pbulk_transfer_t pbulk;
        int ret = 0;
@@ -743,13 +744,16 @@ static int dabusb_ioctl (struct inode *i
 
        dbg("dabusb_ioctl");
 
-       if (s->remove_pending)
+       if (s->remove_pending) {
+               unlock_kernel();
                return -EIO;
+       }
 
        mutex_lock(&s->mutex);
 
        if (!s->usbdev) {
                mutex_unlock(&s->mutex);
+               unlock_kernel();
                return -EIO;
        }
 
@@ -790,6 +794,7 @@ static int dabusb_ioctl (struct inode *i
                break;
        }
        mutex_unlock(&s->mutex);
+       unlock_kernel();
        return ret;
 }
 
@@ -802,7 +807,7 @@ static struct file_operations dabusb_fop
        .owner =        THIS_MODULE,
        .llseek =       no_llseek,
        .read =         dabusb_read,
-       .ioctl =        dabusb_ioctl,
+       .unlocked_ioctl =       dabusb_ioctl,
        .open =         dabusb_open,
        .release =      dabusb_release,
 };


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/a0305683dd02418d788bbc7044d1f8f74613fff0

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to