]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
exfat: reduce the number of parameters for exfat_get_cluster()
authorChi Zhiling <chizhiling@kylinos.cn>
Wed, 14 Jan 2026 12:12:43 +0000 (20:12 +0800)
committerNamjae Jeon <linkinjeon@kernel.org>
Thu, 12 Feb 2026 12:21:49 +0000 (21:21 +0900)
Remove parameter 'fclus' and 'allow_eof':

- The fclus parameter is changed to a local variable as it is not
  needed to be returned.

- The passed allow_eof parameter was always 1, remove it and the
  associated error handling.

Signed-off-by: Chi Zhiling <chizhiling@kylinos.cn>
Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/cache.c
fs/exfat/exfat_fs.h
fs/exfat/inode.c

index d51737498ee4678f0005426f7df06048d844faba..b806e7f5b00f61623a54a72401346522b19ea5a0 100644 (file)
@@ -234,13 +234,12 @@ static inline void cache_init(struct exfat_cache_id *cid,
 }
 
 int exfat_get_cluster(struct inode *inode, unsigned int cluster,
-               unsigned int *fclus, unsigned int *dclus,
-               unsigned int *last_dclus, int allow_eof)
+               unsigned int *dclus, unsigned int *last_dclus)
 {
        struct super_block *sb = inode->i_sb;
        struct exfat_inode_info *ei = EXFAT_I(inode);
        struct exfat_cache_id cid;
-       unsigned int content;
+       unsigned int content, fclus;
 
        if (ei->start_clu == EXFAT_FREE_CLUSTER) {
                exfat_fs_error(sb,
@@ -249,7 +248,7 @@ int exfat_get_cluster(struct inode *inode, unsigned int cluster,
                return -EIO;
        }
 
-       *fclus = 0;
+       fclus = 0;
        *dclus = ei->start_clu;
        *last_dclus = *dclus;
 
@@ -260,32 +259,24 @@ int exfat_get_cluster(struct inode *inode, unsigned int cluster,
                return 0;
 
        cache_init(&cid, EXFAT_EOF_CLUSTER, EXFAT_EOF_CLUSTER);
-       exfat_cache_lookup(inode, cluster, &cid, fclus, dclus);
+       exfat_cache_lookup(inode, cluster, &cid, &fclus, dclus);
 
-       if (*fclus == cluster)
+       if (fclus == cluster)
                return 0;
 
-       while (*fclus < cluster) {
+       while (fclus < cluster) {
                if (exfat_ent_get(sb, *dclus, &content, NULL))
                        return -EIO;
 
                *last_dclus = *dclus;
                *dclus = content;
-               (*fclus)++;
-
-               if (content == EXFAT_EOF_CLUSTER) {
-                       if (!allow_eof) {
-                               exfat_fs_error(sb,
-                                      "invalid cluster chain (i_pos %u, last_clus 0x%08x is EOF)",
-                                      *fclus, (*last_dclus));
-                               return -EIO;
-                       }
+               fclus++;
 
+               if (content == EXFAT_EOF_CLUSTER)
                        break;
-               }
 
                if (!cache_contiguous(&cid, *dclus))
-                       cache_init(&cid, *fclus, *dclus);
+                       cache_init(&cid, fclus, *dclus);
        }
 
        exfat_cache_add(inode, &cid);
index f7f25e0600c7057d449edbfb1aff4dc88ac8610d..e58d8eed5495c33a205f30ed50274313c05afe72 100644 (file)
@@ -486,8 +486,7 @@ int exfat_cache_init(void);
 void exfat_cache_shutdown(void);
 void exfat_cache_inval_inode(struct inode *inode);
 int exfat_get_cluster(struct inode *inode, unsigned int cluster,
-               unsigned int *fclus, unsigned int *dclus,
-               unsigned int *last_dclus, int allow_eof);
+               unsigned int *dclus, unsigned int *last_dclus);
 
 /* dir.c */
 extern const struct inode_operations exfat_dir_inode_operations;
index f9501c3a3666bf9953c4e324a657bc03526976b5..55984585526ef4747727393dca1186bec958fea5 100644 (file)
@@ -157,13 +157,10 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset,
                                *clu += clu_offset;
                }
        } else if (ei->type == TYPE_FILE) {
-               unsigned int fclus = 0;
                int err = exfat_get_cluster(inode, clu_offset,
-                               &fclus, clu, &last_clu, 1);
+                               clu, &last_clu);
                if (err)
                        return -EIO;
-
-               clu_offset -= fclus;
        } else {
                /* hint information */
                if (clu_offset > 0 && ei->hint_bmap.off != EXFAT_EOF_CLUSTER &&