mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
Push BKL down beyond VFS-only parts of do_mount()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
6fac98dd21
commit
7f78d4cd4c
1 changed files with 6 additions and 3 deletions
|
@ -1515,8 +1515,11 @@ static int do_remount(struct path *path, int flags, int mnt_flags,
|
||||||
down_write(&sb->s_umount);
|
down_write(&sb->s_umount);
|
||||||
if (flags & MS_BIND)
|
if (flags & MS_BIND)
|
||||||
err = change_mount_flags(path->mnt, flags);
|
err = change_mount_flags(path->mnt, flags);
|
||||||
else
|
else {
|
||||||
|
lock_kernel();
|
||||||
err = do_remount_sb(sb, flags, data, 0);
|
err = do_remount_sb(sb, flags, data, 0);
|
||||||
|
unlock_kernel();
|
||||||
|
}
|
||||||
if (!err)
|
if (!err)
|
||||||
path->mnt->mnt_flags = mnt_flags;
|
path->mnt->mnt_flags = mnt_flags;
|
||||||
up_write(&sb->s_umount);
|
up_write(&sb->s_umount);
|
||||||
|
@ -1630,7 +1633,9 @@ static int do_new_mount(struct path *path, char *type, int flags,
|
||||||
if (!capable(CAP_SYS_ADMIN))
|
if (!capable(CAP_SYS_ADMIN))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
|
lock_kernel();
|
||||||
mnt = do_kern_mount(type, flags, name, data);
|
mnt = do_kern_mount(type, flags, name, data);
|
||||||
|
unlock_kernel();
|
||||||
if (IS_ERR(mnt))
|
if (IS_ERR(mnt))
|
||||||
return PTR_ERR(mnt);
|
return PTR_ERR(mnt);
|
||||||
|
|
||||||
|
@ -1921,7 +1926,6 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
|
||||||
if (retval)
|
if (retval)
|
||||||
goto dput_out;
|
goto dput_out;
|
||||||
|
|
||||||
lock_kernel();
|
|
||||||
if (flags & MS_REMOUNT)
|
if (flags & MS_REMOUNT)
|
||||||
retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
|
retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
|
||||||
data_page);
|
data_page);
|
||||||
|
@ -1934,7 +1938,6 @@ long do_mount(char *dev_name, char *dir_name, char *type_page,
|
||||||
else
|
else
|
||||||
retval = do_new_mount(&path, type_page, flags, mnt_flags,
|
retval = do_new_mount(&path, type_page, flags, mnt_flags,
|
||||||
dev_name, data_page);
|
dev_name, data_page);
|
||||||
unlock_kernel();
|
|
||||||
dput_out:
|
dput_out:
|
||||||
path_put(&path);
|
path_put(&path);
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in a new issue