diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2010-09-14 17:00:34 -0400 |
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2010-10-04 15:10:46 -0400 |
| commit | 00e300e1b682ea86fcb5216250722afd42686ab3 (patch) | |
| tree | ac3c5a6034aa669993487163eef4f757d2f803af | |
| parent | 4f819a7899b06afcd7623ab9d00fd81503ad3e24 (diff) | |
BKL: Remove BKL from autofs4
autofs4 uses the BKL only to guard its ioctl operations.
This can be trivially converted to use a mutex, as we have
done with most device drivers before.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ian Kent <raven@themaw.net>
| -rw-r--r-- | fs/autofs4/root.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c index cb1bd38dc08c..9dd29c29fd12 100644 --- a/fs/autofs4/root.c +++ b/fs/autofs4/root.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/param.h> | 19 | #include <linux/param.h> |
| 20 | #include <linux/time.h> | 20 | #include <linux/time.h> |
| 21 | #include <linux/compat.h> | 21 | #include <linux/compat.h> |
| 22 | #include <linux/smp_lock.h> | 22 | #include <linux/mutex.h> |
| 23 | 23 | ||
| 24 | #include "autofs_i.h" | 24 | #include "autofs_i.h" |
| 25 | 25 | ||
| @@ -978,15 +978,17 @@ static int autofs4_root_ioctl_unlocked(struct inode *inode, struct file *filp, | |||
| 978 | } | 978 | } |
| 979 | } | 979 | } |
| 980 | 980 | ||
| 981 | static DEFINE_MUTEX(autofs4_ioctl_mutex); | ||
| 982 | |||
| 981 | static long autofs4_root_ioctl(struct file *filp, | 983 | static long autofs4_root_ioctl(struct file *filp, |
| 982 | unsigned int cmd, unsigned long arg) | 984 | unsigned int cmd, unsigned long arg) |
| 983 | { | 985 | { |
| 984 | long ret; | 986 | long ret; |
| 985 | struct inode *inode = filp->f_dentry->d_inode; | 987 | struct inode *inode = filp->f_dentry->d_inode; |
| 986 | 988 | ||
| 987 | lock_kernel(); | 989 | mutex_lock(&autofs4_ioctl_mutex); |
| 988 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, arg); | 990 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, arg); |
| 989 | unlock_kernel(); | 991 | mutex_unlock(&autofs4_ioctl_mutex); |
| 990 | 992 | ||
| 991 | return ret; | 993 | return ret; |
| 992 | } | 994 | } |
| @@ -998,13 +1000,13 @@ static long autofs4_root_compat_ioctl(struct file *filp, | |||
| 998 | struct inode *inode = filp->f_path.dentry->d_inode; | 1000 | struct inode *inode = filp->f_path.dentry->d_inode; |
| 999 | int ret; | 1001 | int ret; |
| 1000 | 1002 | ||
| 1001 | lock_kernel(); | 1003 | mutex_lock(&autofs4_ioctl_mutex); |
| 1002 | if (cmd == AUTOFS_IOC_READY || cmd == AUTOFS_IOC_FAIL) | 1004 | if (cmd == AUTOFS_IOC_READY || cmd == AUTOFS_IOC_FAIL) |
| 1003 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, arg); | 1005 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, arg); |
| 1004 | else | 1006 | else |
| 1005 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, | 1007 | ret = autofs4_root_ioctl_unlocked(inode, filp, cmd, |
| 1006 | (unsigned long)compat_ptr(arg)); | 1008 | (unsigned long)compat_ptr(arg)); |
| 1007 | unlock_kernel(); | 1009 | mutex_unlock(&autofs4_ioctl_mutex); |
| 1008 | 1010 | ||
| 1009 | return ret; | 1011 | return ret; |
| 1010 | } | 1012 | } |
