fat: move MAX_FAT to fat.h and change it to inline function
authorCarmeli Tamir <carmeli.tamir@gmail.com>
Thu, 3 Jan 2019 23:27:56 +0000 (15:27 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 4 Jan 2019 21:13:47 +0000 (13:13 -0800)
MAX_FAT is useless in msdos_fs.h, since it uses the MSDOS_SB function
that is defined in fat.h.  So really, this macro can be only called from
code that already includes fat.h.

Hence, this patch moves it to fat.h, right after MSDOS_SB is defined.  I
also changed it to an inline function in order to save the double call
to MSDOS_SB.  This was suggested by joe@perches.com in the previous
version.

This patch is required for the next in the series, in which the variant
(whether this is FAT12, FAT16 or FAT32) checks are replaced with new
macros.

Link: http://lkml.kernel.org/r/1544990640-11604-3-git-send-email-carmeli.tamir@gmail.com
Signed-off-by: Carmeli Tamir <carmeli.tamir@gmail.com>
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/fat/fat.h
fs/fat/inode.c
include/uapi/linux/msdos_fs.h

index 4e1b2f6df5e6a63f7db7f5b92d96c443de915171..979bb11832f6b4397121a4f243589052b50fd728 100644 (file)
@@ -142,6 +142,15 @@ static inline struct msdos_sb_info *MSDOS_SB(struct super_block *sb)
        return sb->s_fs_info;
 }
 
+/* Maximum number of clusters */
+static inline u32 max_fat(struct super_block *sb)
+{
+       struct msdos_sb_info *sbi = MSDOS_SB(sb);
+
+       return sbi->fat_bits == 32 ? MAX_FAT32 :
+               sbi->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12;
+}
+
 static inline struct msdos_inode_info *MSDOS_I(struct inode *inode)
 {
        return container_of(inode, struct msdos_inode_info, vfs_inode);
index 269e7b91b8b131d58c573887512e4f0681df5ae2..8d0de1aac4eb98467c2d6028392c4ee6d3de02d0 100644 (file)
@@ -1781,7 +1781,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,
        /* check that FAT table does not overflow */
        fat_clusters = calc_fat_clusters(sb);
        total_clusters = min(total_clusters, fat_clusters - FAT_START_ENT);
-       if (total_clusters > MAX_FAT(sb)) {
+       if (total_clusters > max_fat(sb)) {
                if (!silent)
                        fat_msg(sb, KERN_ERR, "count of clusters too big (%u)",
                               total_clusters);
index 833c7079a1e3db1d04d812eefd8b41ee3f417aaa..a5773899f4d910a8f9eee1e6bacd5b0ea1cfba48 100644 (file)
@@ -65,8 +65,6 @@
 #define MAX_FAT12      0xFF4
 #define MAX_FAT16      0xFFF4
 #define MAX_FAT32      0x0FFFFFF6
-#define MAX_FAT(s)     (MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 : \
-       MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
 
 /* bad cluster mark */
 #define BAD_FAT12      0xFF7