diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2010-08-08 21:28:40 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2010-08-08 21:28:40 -0400 |
commit | 5ef06839f50c7e5e479d3595257131edf1f84f36 (patch) | |
tree | 1fa856be5f0e728ba9decfc405f1ea4477d3967a | |
parent | d9a145fb6e5f37b9903dea8371ab5c3e34e8e2d1 (diff) |
staging: Pushdown bkl to easycap ioctl handlers
These were amongst the last users of struct file_operations:ioctl
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-rw-r--r-- | drivers/staging/easycap/easycap.h | 8 | ||||
-rw-r--r-- | drivers/staging/easycap/easycap_ioctl.c | 52 | ||||
-rw-r--r-- | drivers/staging/easycap/easycap_main.c | 38 |
3 files changed, 51 insertions, 47 deletions
diff --git a/drivers/staging/easycap/easycap.h b/drivers/staging/easycap/easycap.h index ad836d2d26fe..f3c827eb0abe 100644 --- a/drivers/staging/easycap/easycap.h +++ b/drivers/staging/easycap/easycap.h | |||
@@ -463,15 +463,12 @@ struct data_buffer audio_buffer[]; | |||
463 | void easycap_complete(struct urb *); | 463 | void easycap_complete(struct urb *); |
464 | int easycap_open(struct inode *, struct file *); | 464 | int easycap_open(struct inode *, struct file *); |
465 | int easycap_release(struct inode *, struct file *); | 465 | int easycap_release(struct inode *, struct file *); |
466 | int easycap_ioctl(struct inode *, struct file *, \ | 466 | long easycap_ioctl(struct file *, unsigned int, unsigned long); |
467 | unsigned int, unsigned long); | ||
468 | 467 | ||
469 | /*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ | 468 | /*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ |
470 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) | 469 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) |
471 | int easycap_open_noinode(struct file *); | 470 | int easycap_open_noinode(struct file *); |
472 | int easycap_release_noinode(struct file *); | 471 | int easycap_release_noinode(struct file *); |
473 | long easycap_ioctl_noinode(struct file *, \ | ||
474 | unsigned int, unsigned long); | ||
475 | int videodev_release(struct video_device *); | 472 | int videodev_release(struct video_device *); |
476 | #endif /*EASYCAP_IS_VIDEODEV_CLIENT*/ | 473 | #endif /*EASYCAP_IS_VIDEODEV_CLIENT*/ |
477 | /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ | 474 | /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ |
@@ -515,8 +512,7 @@ void easysnd_complete(struct urb *); | |||
515 | ssize_t easysnd_read(struct file *, char __user *, size_t, loff_t *); | 512 | ssize_t easysnd_read(struct file *, char __user *, size_t, loff_t *); |
516 | int easysnd_open(struct inode *, struct file *); | 513 | int easysnd_open(struct inode *, struct file *); |
517 | int easysnd_release(struct inode *, struct file *); | 514 | int easysnd_release(struct inode *, struct file *); |
518 | int easysnd_ioctl(struct inode *, struct file *, \ | 515 | long easysnd_ioctl(struct file *, unsigned int, unsigned long); |
519 | unsigned int, unsigned long); | ||
520 | unsigned int easysnd_poll(struct file *, poll_table *); | 516 | unsigned int easysnd_poll(struct file *, poll_table *); |
521 | void easysnd_delete(struct kref *); | 517 | void easysnd_delete(struct kref *); |
522 | int submit_audio_urbs(struct easycap *); | 518 | int submit_audio_urbs(struct easycap *); |
diff --git a/drivers/staging/easycap/easycap_ioctl.c b/drivers/staging/easycap/easycap_ioctl.c index 276b63dfe27e..9a42ae02cd5d 100644 --- a/drivers/staging/easycap/easycap_ioctl.c +++ b/drivers/staging/easycap/easycap_ioctl.c | |||
@@ -25,6 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | /*****************************************************************************/ | 26 | /*****************************************************************************/ |
27 | 27 | ||
28 | #include <linux/smp_lock.h> | ||
28 | #include "easycap.h" | 29 | #include "easycap.h" |
29 | #include "easycap_debug.h" | 30 | #include "easycap_debug.h" |
30 | #include "easycap_standard.h" | 31 | #include "easycap_standard.h" |
@@ -773,19 +774,10 @@ while (0xFFFFFFFF != easycap_control[i1].id) { | |||
773 | SAY("WARNING: failed to adjust mute: control not found\n"); | 774 | SAY("WARNING: failed to adjust mute: control not found\n"); |
774 | return -ENOENT; | 775 | return -ENOENT; |
775 | } | 776 | } |
776 | /****************************************************************************/ | 777 | |
777 | /*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ | ||
778 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) | ||
779 | long | ||
780 | easycap_ioctl_noinode(struct file *file, unsigned int cmd, unsigned long arg)\ | ||
781 | { | ||
782 | return easycap_ioctl((struct inode *)NULL, file, cmd, arg); | ||
783 | } | ||
784 | #endif /*EASYCAP_IS_VIDEODEV_CLIENT*/ | ||
785 | /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ | ||
786 | /*--------------------------------------------------------------------------*/ | 778 | /*--------------------------------------------------------------------------*/ |
787 | int easycap_ioctl(struct inode *inode, struct file *file, \ | 779 | static int easycap_ioctl_bkl(struct inode *inode, struct file *file, |
788 | unsigned int cmd, unsigned long arg) | 780 | unsigned int cmd, unsigned long arg) |
789 | { | 781 | { |
790 | static struct easycap *peasycap; | 782 | static struct easycap *peasycap; |
791 | static struct usb_device *p; | 783 | static struct usb_device *p; |
@@ -1956,19 +1948,22 @@ default: { | |||
1956 | } | 1948 | } |
1957 | return 0; | 1949 | return 0; |
1958 | } | 1950 | } |
1959 | /****************************************************************************/ | 1951 | |
1960 | /*vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ | 1952 | long easycap_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
1961 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) | ||
1962 | long | ||
1963 | easysnd_ioctl_noinode(struct file *file, unsigned int cmd, unsigned long arg) | ||
1964 | { | 1953 | { |
1965 | return easysnd_ioctl((struct inode *)NULL, file, cmd, arg); | 1954 | struct inode *inode = file->f_dentry->d_inode; |
1955 | long ret; | ||
1956 | |||
1957 | lock_kernel(); | ||
1958 | ret = easycap_ioctl_bkl(inode, file, cmd, arg); | ||
1959 | unlock_kernel(); | ||
1960 | |||
1961 | return ret; | ||
1966 | } | 1962 | } |
1967 | #endif /*EASYCAP_IS_VIDEODEV_CLIENT*/ | 1963 | |
1968 | /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ | ||
1969 | /*--------------------------------------------------------------------------*/ | 1964 | /*--------------------------------------------------------------------------*/ |
1970 | int easysnd_ioctl(struct inode *inode, struct file *file, \ | 1965 | static int easysnd_ioctl_bkl(struct inode *inode, struct file *file, |
1971 | unsigned int cmd, unsigned long arg) | 1966 | unsigned int cmd, unsigned long arg) |
1972 | { | 1967 | { |
1973 | struct easycap *peasycap; | 1968 | struct easycap *peasycap; |
1974 | struct usb_device *p; | 1969 | struct usb_device *p; |
@@ -2158,6 +2153,19 @@ default: { | |||
2158 | } | 2153 | } |
2159 | return 0; | 2154 | return 0; |
2160 | } | 2155 | } |
2156 | |||
2157 | long easysnd_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | ||
2158 | { | ||
2159 | struct inode *inode = file->f_dentry->d_inode; | ||
2160 | long ret; | ||
2161 | |||
2162 | lock_kernel(); | ||
2163 | ret = easysnd_ioctl_bkl(inode, file, cmd, arg); | ||
2164 | unlock_kernel(); | ||
2165 | |||
2166 | return ret; | ||
2167 | } | ||
2168 | |||
2161 | /*****************************************************************************/ | 2169 | /*****************************************************************************/ |
2162 | int explain_ioctl(__u32 wot) | 2170 | int explain_ioctl(__u32 wot) |
2163 | { | 2171 | { |
diff --git a/drivers/staging/easycap/easycap_main.c b/drivers/staging/easycap/easycap_main.c index 09c194ce10a3..5a4bbd9b453f 100644 --- a/drivers/staging/easycap/easycap_main.c +++ b/drivers/staging/easycap/easycap_main.c | |||
@@ -60,13 +60,13 @@ struct usb_driver easycap_usb_driver = { | |||
60 | */ | 60 | */ |
61 | /*---------------------------------------------------------------------------*/ | 61 | /*---------------------------------------------------------------------------*/ |
62 | const struct file_operations easycap_fops = { | 62 | const struct file_operations easycap_fops = { |
63 | .owner = THIS_MODULE, | 63 | .owner = THIS_MODULE, |
64 | .open = easycap_open, | 64 | .open = easycap_open, |
65 | .release = easycap_release, | 65 | .release = easycap_release, |
66 | .ioctl = easycap_ioctl, | 66 | .unlocked_ioctl = easycap_ioctl, |
67 | .poll = easycap_poll, | 67 | .poll = easycap_poll, |
68 | .mmap = easycap_mmap, | 68 | .mmap = easycap_mmap, |
69 | .llseek = no_llseek, | 69 | .llseek = no_llseek, |
70 | }; | 70 | }; |
71 | struct vm_operations_struct easycap_vm_ops = { | 71 | struct vm_operations_struct easycap_vm_ops = { |
72 | .open = easycap_vma_open, | 72 | .open = easycap_vma_open, |
@@ -83,12 +83,12 @@ struct usb_class_driver easycap_class = { | |||
83 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) | 83 | #if defined(EASYCAP_IS_VIDEODEV_CLIENT) |
84 | #if defined(EASYCAP_NEEDS_V4L2_FOPS) | 84 | #if defined(EASYCAP_NEEDS_V4L2_FOPS) |
85 | const struct v4l2_file_operations v4l2_fops = { | 85 | const struct v4l2_file_operations v4l2_fops = { |
86 | .owner = THIS_MODULE, | 86 | .owner = THIS_MODULE, |
87 | .open = easycap_open_noinode, | 87 | .open = easycap_open_noinode, |
88 | .release = easycap_release_noinode, | 88 | .release = easycap_release_noinode, |
89 | .ioctl = easycap_ioctl_noinode, | 89 | .unlocked_ioctl = easycap_ioctl, |
90 | .poll = easycap_poll, | 90 | .poll = easycap_poll, |
91 | .mmap = easycap_mmap, | 91 | .mmap = easycap_mmap, |
92 | }; | 92 | }; |
93 | #endif /*EASYCAP_NEEDS_V4L2_FOPS*/ | 93 | #endif /*EASYCAP_NEEDS_V4L2_FOPS*/ |
94 | int video_device_many /*=0*/; | 94 | int video_device_many /*=0*/; |
@@ -102,12 +102,12 @@ struct video_device *pvideo_array[VIDEO_DEVICE_MANY], *pvideo_device; | |||
102 | */ | 102 | */ |
103 | /*--------------------------------------------------------------------------*/ | 103 | /*--------------------------------------------------------------------------*/ |
104 | const struct file_operations easysnd_fops = { | 104 | const struct file_operations easysnd_fops = { |
105 | .owner = THIS_MODULE, | 105 | .owner = THIS_MODULE, |
106 | .open = easysnd_open, | 106 | .open = easysnd_open, |
107 | .release = easysnd_release, | 107 | .release = easysnd_release, |
108 | .ioctl = easysnd_ioctl, | 108 | .unlocked_ioctl = easysnd_ioctl, |
109 | .read = easysnd_read, | 109 | .read = easysnd_read, |
110 | .llseek = no_llseek, | 110 | .llseek = no_llseek, |
111 | }; | 111 | }; |
112 | struct usb_class_driver easysnd_class = { | 112 | struct usb_class_driver easysnd_class = { |
113 | .name = "usb/easysnd%d", | 113 | .name = "usb/easysnd%d", |