OSDN Git Service

exfat: fix overflow issue in exfat_cluster_to_sector()
authorNamjae Jeon <namjae.jeon@samsung.com>
Fri, 3 Jul 2020 02:16:32 +0000 (11:16 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Tue, 21 Jul 2020 01:44:06 +0000 (10:44 +0900)
An overflow issue can occur while calculating sector in
exfat_cluster_to_sector(). It needs to cast clus's type to sector_t
before left shifting.

Fixes: 1acf1a564b60 ("exfat: add in-memory and on-disk structures and headers")
Cc: stable@vger.kernel.org # v5.7
Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
fs/exfat/exfat_fs.h

index 7579cd3..75c7bdb 100644 (file)
@@ -371,7 +371,7 @@ static inline bool exfat_is_last_sector_in_cluster(struct exfat_sb_info *sbi,
 static inline sector_t exfat_cluster_to_sector(struct exfat_sb_info *sbi,
                unsigned int clus)
 {
-       return ((clus - EXFAT_RESERVED_CLUSTERS) << sbi->sect_per_clus_bits) +
+       return ((sector_t)(clus - EXFAT_RESERVED_CLUSTERS) << sbi->sect_per_clus_bits) +
                sbi->data_start_sector;
 }