diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2008-07-25 04:48:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-25 13:53:43 -0400 |
commit | e05e9f7c4aeb82eaa23e46b29580ff514590c641 (patch) | |
tree | 84b84201f10307ca935e5cc90f74c235625575d5 /drivers | |
parent | 11af7478addd34c42999b3b84095903ed9e67038 (diff) |
ixj: push BKL into driver and wrap ioctls
Signed-off-by: Alan Cox <alan@redhat.com>
Cc: Nishanth Aravamudan <nacc@us.ibm.com>
Cc: Domen Puncer <domen@coderock.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/telephony/ixj.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c index 49cd9793404f..ec7aeb502d15 100644 --- a/drivers/telephony/ixj.c +++ b/drivers/telephony/ixj.c | |||
@@ -6095,15 +6095,15 @@ static int capabilities_check(IXJ *j, struct phone_capability *pcreq) | |||
6095 | return retval; | 6095 | return retval; |
6096 | } | 6096 | } |
6097 | 6097 | ||
6098 | static int ixj_ioctl(struct inode *inode, struct file *file_p, unsigned int cmd, unsigned long arg) | 6098 | static long do_ixj_ioctl(struct file *file_p, unsigned int cmd, unsigned long arg) |
6099 | { | 6099 | { |
6100 | IXJ_TONE ti; | 6100 | IXJ_TONE ti; |
6101 | IXJ_FILTER jf; | 6101 | IXJ_FILTER jf; |
6102 | IXJ_FILTER_RAW jfr; | 6102 | IXJ_FILTER_RAW jfr; |
6103 | void __user *argp = (void __user *)arg; | 6103 | void __user *argp = (void __user *)arg; |
6104 | 6104 | struct inode *inode = file_p->f_path.dentry->d_inode; | |
6105 | unsigned int raise, mant; | ||
6106 | unsigned int minor = iminor(inode); | 6105 | unsigned int minor = iminor(inode); |
6106 | unsigned int raise, mant; | ||
6107 | int board = NUM(inode); | 6107 | int board = NUM(inode); |
6108 | 6108 | ||
6109 | IXJ *j = get_ixj(NUM(inode)); | 6109 | IXJ *j = get_ixj(NUM(inode)); |
@@ -6661,6 +6661,15 @@ static int ixj_ioctl(struct inode *inode, struct file *file_p, unsigned int cmd, | |||
6661 | return retval; | 6661 | return retval; |
6662 | } | 6662 | } |
6663 | 6663 | ||
6664 | static long ixj_ioctl(struct file *file_p, unsigned int cmd, unsigned long arg) | ||
6665 | { | ||
6666 | long ret; | ||
6667 | lock_kernel(); | ||
6668 | ret = do_ixj_ioctl(file_p, cmd, arg); | ||
6669 | unlock_kernel(); | ||
6670 | return ret; | ||
6671 | } | ||
6672 | |||
6664 | static int ixj_fasync(int fd, struct file *file_p, int mode) | 6673 | static int ixj_fasync(int fd, struct file *file_p, int mode) |
6665 | { | 6674 | { |
6666 | IXJ *j = get_ixj(NUM(file_p->f_path.dentry->d_inode)); | 6675 | IXJ *j = get_ixj(NUM(file_p->f_path.dentry->d_inode)); |
@@ -6674,7 +6683,7 @@ static const struct file_operations ixj_fops = | |||
6674 | .read = ixj_enhanced_read, | 6683 | .read = ixj_enhanced_read, |
6675 | .write = ixj_enhanced_write, | 6684 | .write = ixj_enhanced_write, |
6676 | .poll = ixj_poll, | 6685 | .poll = ixj_poll, |
6677 | .ioctl = ixj_ioctl, | 6686 | .unlocked_ioctl = ixj_ioctl, |
6678 | .release = ixj_release, | 6687 | .release = ixj_release, |
6679 | .fasync = ixj_fasync | 6688 | .fasync = ixj_fasync |
6680 | }; | 6689 | }; |