exfat: fix range validation error in alloc and free cluster
authorhyeongseok.kim <hyeongseok@gmail.com>
Thu, 4 Jun 2020 04:54:28 +0000 (13:54 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Tue, 9 Jun 2020 07:50:12 +0000 (16:50 +0900)
There is check error in range condition that can never be entered
even with invalid input.
Replace incorrent checking code with already existing valid checker.

Signed-off-by: hyeongseok.kim <hyeongseok@gmail.com>
Acked-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
fs/exfat/fatent.c

index 267e5e09eb134c34990ac2d5ce17e2692c955be8..4e5c5c9c0f2df4457670dfeb14f30bfbcbd32a5d 100644 (file)
@@ -169,7 +169,7 @@ int exfat_free_cluster(struct inode *inode, struct exfat_chain *p_chain)
                return 0;
 
        /* check cluster validation */
-       if (p_chain->dir < 2 && p_chain->dir >= sbi->num_clusters) {
+       if (!is_valid_cluster(sbi, p_chain->dir)) {
                exfat_err(sb, "invalid start cluster (%u)", p_chain->dir);
                return -EIO;
        }
@@ -346,7 +346,7 @@ int exfat_alloc_cluster(struct inode *inode, unsigned int num_alloc,
        }
 
        /* check cluster validation */
-       if (hint_clu < EXFAT_FIRST_CLUSTER && hint_clu >= sbi->num_clusters) {
+       if (!is_valid_cluster(sbi, hint_clu)) {
                exfat_err(sb, "hint_cluster is invalid (%u)",
                        hint_clu);
                hint_clu = EXFAT_FIRST_CLUSTER;