diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-05-08 13:31:17 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-11 21:36:08 -0400 |
commit | 6fac98dd218653c6aff8a0f56305c424930cea2a (patch) | |
tree | 0c5bdca0092e5ec3b201bae958071a7e8385409d /fs | |
parent | bbd6851a3213a525128473e978b692ab6ac11aba (diff) | |
download | op-kernel-dev-6fac98dd218653c6aff8a0f56305c424930cea2a.zip op-kernel-dev-6fac98dd218653c6aff8a0f56305c424930cea2a.tar.gz |
Push BKL into do_mount()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/compat.c | 2 | ||||
-rw-r--r-- | fs/namespace.c | 4 |
2 files changed, 2 insertions, 4 deletions
diff --git a/fs/compat.c b/fs/compat.c index bb2a9b2..6aefb77 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -812,10 +812,8 @@ asmlinkage long compat_sys_mount(char __user * dev_name, char __user * dir_name, } } - lock_kernel(); retval = do_mount((char*)dev_page, dir_page, (char*)type_page, flags, (void*)data_page); - unlock_kernel(); out4: free_page(data_page); diff --git a/fs/namespace.c b/fs/namespace.c index 7e537f0..4740f7b 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1921,6 +1921,7 @@ long do_mount(char *dev_name, char *dir_name, char *type_page, if (retval) goto dput_out; + lock_kernel(); if (flags & MS_REMOUNT) retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, data_page); @@ -1933,6 +1934,7 @@ long do_mount(char *dev_name, char *dir_name, char *type_page, else retval = do_new_mount(&path, type_page, flags, mnt_flags, dev_name, data_page); + unlock_kernel(); dput_out: path_put(&path); return retval; @@ -2046,10 +2048,8 @@ SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name, if (retval < 0) goto out3; - lock_kernel(); retval = do_mount((char *)dev_page, dir_page, (char *)type_page, flags, (void *)data_page); - unlock_kernel(); free_page(data_page); out3: |