]> git.hungrycats.org Git - linux/commitdiff
[PATCH] remount_fs needs lock_kernel()
authorAndrew Morton <akpm@osdl.org>
Thu, 7 Aug 2003 04:13:35 +0000 (21:13 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Thu, 7 Aug 2003 04:13:35 +0000 (21:13 -0700)
The new emergency remount path forgot to take lock_kernel(), which is
required for ->remount_fs().

fs/super.c

index 8f1f26de16736674b0633215f29bc458cd7944dd..ae60330a6c8f3a93f6021a7944897e5f613075c3 100644 (file)
@@ -488,8 +488,16 @@ static void do_emergency_remount(unsigned long foo)
                sb->s_count++;
                spin_unlock(&sb_lock);
                down_read(&sb->s_umount);
-               if (sb->s_root && sb->s_bdev && !(sb->s_flags & MS_RDONLY))
+               if (sb->s_root && sb->s_bdev && !(sb->s_flags & MS_RDONLY)) {
+                       /*
+                        * ->remount_fs needs lock_kernel().
+                        *
+                        * What lock protects sb->s_flags??
+                        */
+                       lock_kernel();
                        do_remount_sb(sb, MS_RDONLY, NULL, 1);
+                       unlock_kernel();
+               }
                drop_super(sb);
                spin_lock(&sb_lock);
        }