summaryrefslogtreecommitdiffstats
path: root/fs/fat
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2010-09-14 23:07:27 +0200
committerArnd Bergmann <arnd@arndb.de>2010-10-04 21:10:45 +0200
commit3768744cfea7b995dce27f02341161fbfdfee80c (patch)
tree29655ece93aa751f2f9ff98e21b840b5b80b91c0 /fs/fat
parentBKL: Remove BKL from ext2 filesystem (diff)
downloadlinux-3768744cfea7b995dce27f02341161fbfdfee80c.tar.xz
linux-3768744cfea7b995dce27f02341161fbfdfee80c.zip
BKL: Remove BKL from fat
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>
Diffstat (limited to 'fs/fat')
-rw-r--r--fs/fat/inode.c5
-rw-r--r--fs/fat/namei_msdos.c7
-rw-r--r--fs/fat/namei_vfat.c7
3 files changed, 6 insertions, 13 deletions
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 830058057d33..ad6998a92c30 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -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;
diff --git a/fs/fat/namei_msdos.c b/fs/fat/namei_msdos.c
index e2b0b978340d..bbca5c186ae7 100644
--- a/fs/fat/namei_msdos.c
+++ b/fs/fat/namei_msdos.c
@@ -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;
}
diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
index 9006ad9c7b11..6f0f6c9a0152 100644
--- a/fs/fat/namei_vfat.c
+++ b/fs/fat/namei_vfat.c
@@ -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;
}