diff options
author | Alessio Igor Bogani <abogani@texware.it> | 2009-05-12 09:10:54 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-11 21:36:11 -0400 |
commit | 337eb00a2c3a421999c39c94ce7e33545ee8baa7 (patch) | |
tree | d9b780d095b638b1d8fa23841ff70347cf5daa08 /fs/affs/super.c | |
parent | 4195f73d1329e49727bcceb028e58cb38376c2b0 (diff) |
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>
Diffstat (limited to 'fs/affs/super.c')
-rw-r--r-- | fs/affs/super.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/affs/super.c b/fs/affs/super.c index 280d361af41f..c4814937c968 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/parser.h> | 16 | #include <linux/parser.h> |
17 | #include <linux/magic.h> | 17 | #include <linux/magic.h> |
18 | #include <linux/sched.h> | 18 | #include <linux/sched.h> |
19 | #include <linux/smp_lock.h> | ||
19 | #include "affs.h" | 20 | #include "affs.h" |
20 | 21 | ||
21 | extern struct timezone sys_tz; | 22 | extern struct timezone sys_tz; |
@@ -512,6 +513,7 @@ affs_remount(struct super_block *sb, int *flags, char *data) | |||
512 | kfree(new_opts); | 513 | kfree(new_opts); |
513 | return -EINVAL; | 514 | return -EINVAL; |
514 | } | 515 | } |
516 | lock_kernel(); | ||
515 | replace_mount_options(sb, new_opts); | 517 | replace_mount_options(sb, new_opts); |
516 | 518 | ||
517 | sbi->s_flags = mount_flags; | 519 | sbi->s_flags = mount_flags; |
@@ -519,8 +521,10 @@ affs_remount(struct super_block *sb, int *flags, char *data) | |||
519 | sbi->s_uid = uid; | 521 | sbi->s_uid = uid; |
520 | sbi->s_gid = gid; | 522 | sbi->s_gid = gid; |
521 | 523 | ||
522 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) | 524 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) { |
525 | unlock_kernel(); | ||
523 | return 0; | 526 | return 0; |
527 | } | ||
524 | if (*flags & MS_RDONLY) { | 528 | if (*flags & MS_RDONLY) { |
525 | sb->s_dirt = 1; | 529 | sb->s_dirt = 1; |
526 | while (sb->s_dirt) | 530 | while (sb->s_dirt) |
@@ -529,6 +533,7 @@ affs_remount(struct super_block *sb, int *flags, char *data) | |||
529 | } else | 533 | } else |
530 | res = affs_init_bitmap(sb, flags); | 534 | res = affs_init_bitmap(sb, flags); |
531 | 535 | ||
536 | unlock_kernel(); | ||
532 | return res; | 537 | return res; |
533 | } | 538 | } |
534 | 539 | ||