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 /fs/autofs4 | |
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>
Diffstat (limited to 'fs/autofs4')
-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 | } |