Skip to content

Commit

Permalink
BKL: Remove BKL from fat
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: OGAWA Hirofumi <[email protected]>
Cc: Jan Blunck <[email protected]>
  • Loading branch information
arndb committed Oct 4, 2010
1 parent 3e44f9f commit 3768744
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 13 deletions.
5 changes: 0 additions & 5 deletions fs/fat/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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);

Expand All @@ -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;
Expand Down
7 changes: 3 additions & 4 deletions fs/fat/namei_msdos.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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;
}

Expand Down
7 changes: 3 additions & 4 deletions fs/fat/namei_vfat.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"

/*
Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand Down

0 comments on commit 3768744

Please sign in to comment.