]> git.hungrycats.org Git - linux/commitdiff
[PATCH] fat_access cleanup (6/11)
authorHirofumi Ogawa <hirofumi@mail.parknet.co.jp>
Fri, 25 Jul 2003 09:12:54 +0000 (02:12 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Fri, 25 Jul 2003 09:12:54 +0000 (02:12 -0700)
This reads ->free_clusters without lock_fat() in fat_statfs().

fs/fat/inode.c

index 9ac84b93aaa9fe32ecdab2b50ff7724e3006e4f2..0809cfee59d4696966e91969c427d4d65d6fdc68 100644 (file)
@@ -1024,19 +1024,23 @@ out_fail:
 
 int fat_statfs(struct super_block *sb, struct kstatfs *buf)
 {
-       int free,nr;
+       int free, nr;
        
-       lock_fat(sb);
        if (MSDOS_SB(sb)->free_clusters != -1)
                free = MSDOS_SB(sb)->free_clusters;
        else {
-               free = 0;
-               for (nr = 2; nr < MSDOS_SB(sb)->clusters + 2; nr++)
-                       if (fat_access(sb, nr, -1) == FAT_ENT_FREE)
-                               free++;
-               MSDOS_SB(sb)->free_clusters = free;
+               lock_fat(sb);
+               if (MSDOS_SB(sb)->free_clusters != -1)
+                       free = MSDOS_SB(sb)->free_clusters;
+               else {
+                       free = 0;
+                       for (nr = 2; nr < MSDOS_SB(sb)->clusters + 2; nr++)
+                               if (fat_access(sb, nr, -1) == FAT_ENT_FREE)
+                                       free++;
+                       MSDOS_SB(sb)->free_clusters = free;
+               }
+               unlock_fat(sb);
        }
-       unlock_fat(sb);
 
        buf->f_type = sb->s_magic;
        buf->f_bsize = 1 << MSDOS_SB(sb)->cluster_bits;