diff options
author | Jonathan Corbet <corbet@lwn.net> | 2008-05-15 11:58:31 -0600 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2008-06-20 14:05:48 -0600 |
commit | 16750c2f32e3fd879fce787a13900f11633ef9af (patch) | |
tree | 5fe0c4fff83d764f1ca4e41dc23462bb0671b150 | |
parent | 70ffa16e604bab22b12bf72cb7796f1dd01ec335 (diff) | |
download | op-kernel-dev-16750c2f32e3fd879fce787a13900f11633ef9af.zip op-kernel-dev-16750c2f32e3fd879fce787a13900f11633ef9af.tar.gz |
phonedev: cdev lock_kernel() pushdown
phone_open() looks OK, but I don't trust the subsidiary drivers (and ixj in
particular).
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
-rw-r--r-- | drivers/telephony/phonedev.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/telephony/phonedev.c b/drivers/telephony/phonedev.c index bcea8d9..4d74ba3 100644 --- a/drivers/telephony/phonedev.c +++ b/drivers/telephony/phonedev.c @@ -23,6 +23,7 @@ #include <linux/errno.h> #include <linux/phonedev.h> #include <linux/init.h> +#include <linux/smp_lock.h> #include <asm/uaccess.h> #include <asm/system.h> @@ -53,6 +54,7 @@ static int phone_open(struct inode *inode, struct file *file) if (minor >= PHONE_NUM_DEVICES) return -ENODEV; + lock_kernel(); mutex_lock(&phone_lock); p = phone_device[minor]; if (p) @@ -79,6 +81,7 @@ static int phone_open(struct inode *inode, struct file *file) fops_put(old_fops); end: mutex_unlock(&phone_lock); + unlock_kernel(); return err; } |