BKL: Remove BKL from fat
authorArnd Bergmann <arnd@arndb.de>
Tue, 14 Sep 2010 21:07:27 +0000 (23:07 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 4 Oct 2010 19:10:45 +0000 (21:10 +0200)
The lock_kernel in fat_put_super is not needed because
it only protects the super block itself and we know that
no other thread can reach it because we are about to
kfree the object.

In the two fill_super functions, this converts the locking
to use lock_super like elsewhere in the fat code. This
is probably not needed either, but is consistent and puts
us on the safe side.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Jan Blunck <jblunck@infradead.org>
fs/fat/inode.c
fs/fat/namei_msdos.c
fs/fat/namei_vfat.c

index 830058057d333d547effdbc969d8a9d89464854f..ad6998a92c30d4a90336bcb295743ffb9547ec3f 100644 (file)
@@ -14,7 +14,6 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/slab.h>
-#include <linux/smp_lock.h>
 #include <linux/seq_file.h>
 #include <linux/pagemap.h>
 #include <linux/mpage.h>
@@ -489,8 +488,6 @@ static void fat_put_super(struct super_block *sb)
 {
        struct msdos_sb_info *sbi = MSDOS_SB(sb);
 
-       lock_kernel();
-
        if (sb->s_dirt)
                fat_write_super(sb);
 
@@ -504,8 +501,6 @@ static void fat_put_super(struct super_block *sb)
 
        sb->s_fs_info = NULL;
        kfree(sbi);
-
-       unlock_kernel();
 }
 
 static struct kmem_cache *fat_inode_cachep;
index e2b0b978340d7ea63e1c4be0ddd1f411fc653ef4..bbca5c186ae7654d69025a2cbb214c1fc1f96a3d 100644 (file)
@@ -9,7 +9,6 @@
 #include <linux/module.h>
 #include <linux/time.h>
 #include <linux/buffer_head.h>
-#include <linux/smp_lock.h>     /* For lock_kernel() */
 #include "fat.h"
 
 /* Characters that are undesirable in an MS-DOS file name */
@@ -663,16 +662,16 @@ static int msdos_fill_super(struct super_block *sb, void *data, int silent)
 {
        int res;
 
-       lock_kernel();
+       lock_super(sb);
        res = fat_fill_super(sb, data, silent, &msdos_dir_inode_operations, 0);
        if (res) {
-               unlock_kernel();
+               unlock_super(sb);
                return res;
        }
 
        sb->s_flags |= MS_NOATIME;
        sb->s_root->d_op = &msdos_dentry_operations;
-       unlock_kernel();
+       unlock_super(sb);
        return 0;
 }
 
index 9006ad9c7b11f43ed2ea7cf08d57b52f47d897c5..6f0f6c9a0152263d61081e436641fb9a0300db6c 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/slab.h>
 #include <linux/buffer_head.h>
 #include <linux/namei.h>
-#include <linux/smp_lock.h>     /* For lock_kernel() */
 #include "fat.h"
 
 /*
@@ -1056,10 +1055,10 @@ static int vfat_fill_super(struct super_block *sb, void *data, int silent)
 {
        int res;
 
-       lock_kernel();
+       lock_super(sb);
        res = fat_fill_super(sb, data, silent, &vfat_dir_inode_operations, 1);
        if (res) {
-               unlock_kernel();
+               unlock_super(sb);
                return res;
        }
 
@@ -1068,7 +1067,7 @@ static int vfat_fill_super(struct super_block *sb, void *data, int silent)
        else
                sb->s_root->d_op = &vfat_dentry_ops;
 
-       unlock_kernel();
+       unlock_super(sb);
        return 0;
 }