diff options
Diffstat (limited to 'drivers/media/dvb/bt8xx/dst_ca.c')
-rw-r--r-- | drivers/media/dvb/bt8xx/dst_ca.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/media/dvb/bt8xx/dst_ca.c b/drivers/media/dvb/bt8xx/dst_ca.c index cf8705162845..48e48e8af55a 100644 --- a/drivers/media/dvb/bt8xx/dst_ca.c +++ b/drivers/media/dvb/bt8xx/dst_ca.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/smp_lock.h> | 25 | #include <linux/mutex.h> |
26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
27 | #include <linux/dvb/ca.h> | 27 | #include <linux/dvb/ca.h> |
28 | #include "dvbdev.h" | 28 | #include "dvbdev.h" |
@@ -52,6 +52,7 @@ | |||
52 | } while(0) | 52 | } while(0) |
53 | 53 | ||
54 | 54 | ||
55 | static DEFINE_MUTEX(dst_ca_mutex); | ||
55 | static unsigned int verbose = 5; | 56 | static unsigned int verbose = 5; |
56 | module_param(verbose, int, 0644); | 57 | module_param(verbose, int, 0644); |
57 | MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)"); | 58 | MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)"); |
@@ -564,7 +565,7 @@ static long dst_ca_ioctl(struct file *file, unsigned int cmd, unsigned long ioct | |||
564 | void __user *arg = (void __user *)ioctl_arg; | 565 | void __user *arg = (void __user *)ioctl_arg; |
565 | int result = 0; | 566 | int result = 0; |
566 | 567 | ||
567 | lock_kernel(); | 568 | mutex_lock(&dst_ca_mutex); |
568 | dvbdev = file->private_data; | 569 | dvbdev = file->private_data; |
569 | state = (struct dst_state *)dvbdev->priv; | 570 | state = (struct dst_state *)dvbdev->priv; |
570 | p_ca_message = kmalloc(sizeof (struct ca_msg), GFP_KERNEL); | 571 | p_ca_message = kmalloc(sizeof (struct ca_msg), GFP_KERNEL); |
@@ -652,7 +653,7 @@ static long dst_ca_ioctl(struct file *file, unsigned int cmd, unsigned long ioct | |||
652 | kfree (p_ca_slot_info); | 653 | kfree (p_ca_slot_info); |
653 | kfree (p_ca_caps); | 654 | kfree (p_ca_caps); |
654 | 655 | ||
655 | unlock_kernel(); | 656 | mutex_unlock(&dst_ca_mutex); |
656 | return result; | 657 | return result; |
657 | } | 658 | } |
658 | 659 | ||
@@ -694,7 +695,8 @@ static const struct file_operations dst_ca_fops = { | |||
694 | .open = dst_ca_open, | 695 | .open = dst_ca_open, |
695 | .release = dst_ca_release, | 696 | .release = dst_ca_release, |
696 | .read = dst_ca_read, | 697 | .read = dst_ca_read, |
697 | .write = dst_ca_write | 698 | .write = dst_ca_write, |
699 | .llseek = noop_llseek, | ||
698 | }; | 700 | }; |
699 | 701 | ||
700 | static struct dvb_device dvbdev_ca = { | 702 | static struct dvb_device dvbdev_ca = { |