exfat: fix overflow in sector and cluster conversion
authorYuezhang Mo <Yuezhang.Mo@sony.com>
Tue, 13 Dec 2022 01:40:32 +0000 (09:40 +0800)
committerNamjae Jeon <linkinjeon@kernel.org>
Tue, 13 Dec 2022 11:17:11 +0000 (20:17 +0900)
According to the exFAT specification, there are at most 2^32-11
clusters in a volume. so using 'int' is not enough for cluster
index, the return value type of exfat_sector_to_cluster() should
be 'unsigned int'.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/exfat_fs.h

index a1e7feb..bc6d21d 100644 (file)
@@ -400,7 +400,7 @@ static inline sector_t exfat_cluster_to_sector(struct exfat_sb_info *sbi,
                sbi->data_start_sector;
 }
 
-static inline int exfat_sector_to_cluster(struct exfat_sb_info *sbi,
+static inline unsigned int exfat_sector_to_cluster(struct exfat_sb_info *sbi,
                sector_t sec)
 {
        return ((sec - sbi->data_start_sector) >> sbi->sect_per_clus_bits) +