Blob Blame History Raw
From a949824f01f3b39f737d77aed6cba47aced09319 Mon Sep 17 00:00:00 2001
From: "hyeongseok.kim" <hyeongseok@gmail.com>
Date: Thu, 4 Jun 2020 13:54:28 +0900
Subject: [Backport a949824f01f3] exfat: fix range validation error in alloc
 and free cluster

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>
---
 src/fatent.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/fatent.c b/src/fatent.c
index 267e5e09eb134c34990ac2d5ce17e2692c955be8..4e5c5c9c0f2df4457670dfeb14f30bfbcbd32a5d 100644
--- a/src/fatent.c
+++ b/src/fatent.c
@@ -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;
-- 
2.31.1