Push BKL down into ->remount_fs()
[xfs, btrfs, capifs, shmem don't need BKL, exempt] Signed-off-by: Alessio Igor Bogani <abogani@texware.it> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
committed by
Al Viro
parent
4195f73d13
commit
337eb00a2c
@@ -1162,6 +1162,8 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
|
||||
unsigned long old_sb_flags;
|
||||
int err;
|
||||
|
||||
lock_kernel();
|
||||
|
||||
/* Store the old options */
|
||||
old_sb_flags = sb->s_flags;
|
||||
old_opts.s_mount_opt = sbi->s_mount_opt;
|
||||
@@ -1197,12 +1199,16 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
|
||||
sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
|
||||
sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
|
||||
}
|
||||
if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
|
||||
if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) {
|
||||
unlock_kernel();
|
||||
return 0;
|
||||
}
|
||||
if (*flags & MS_RDONLY) {
|
||||
if (le16_to_cpu(es->s_state) & EXT2_VALID_FS ||
|
||||
!(sbi->s_mount_state & EXT2_VALID_FS))
|
||||
!(sbi->s_mount_state & EXT2_VALID_FS)) {
|
||||
unlock_kernel();
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* OK, we are remounting a valid rw partition rdonly, so set
|
||||
* the rdonly flag and then mark the partition as valid again.
|
||||
@@ -1229,12 +1235,14 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
|
||||
sb->s_flags &= ~MS_RDONLY;
|
||||
}
|
||||
ext2_sync_super(sb, es);
|
||||
unlock_kernel();
|
||||
return 0;
|
||||
restore_opts:
|
||||
sbi->s_mount_opt = old_opts.s_mount_opt;
|
||||
sbi->s_resuid = old_opts.s_resuid;
|
||||
sbi->s_resgid = old_opts.s_resgid;
|
||||
sb->s_flags = old_sb_flags;
|
||||
unlock_kernel();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user