summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorChi Zhiling <chizhiling@kylinos.cn>2026-09-05 13:49:50 +0800
committerNamjae Jeon <linkinjeon@kernel.org>2026-10-21 08:28:27 +0900
commitcb9dbf8a4e34b4fdf311598835ab4d76ed7e07c1 (patch)
treeea0c152d0b0485ddf99efc1d0ff052bbc062e826 /scripts/Makefile.thinlto
parent4483ab85d1e0d934dfc827a828c8b265e82cdb4f (diff)
downloadlinux-cb9dbf8a4e34b4fdf311598835ab4d76ed7e07c1.tar.gz
linux-cb9dbf8a4e34b4fdf311598835ab4d76ed7e07c1.zip
exfat: fix used_clusters accounting during cluster allocation
In the current exfat_alloc_cluster(), p_chain->size is incremented as each cluster is allocated so that the partially allocated chain can be freed by __exfat_free_cluster() on the error path. However, sbi->used_clusters is still updated only after all clusters have been allocated, while __exfat_free_cluster() unconditionally subtracts the number of freed clusters from sbi->used_clusters. Therefore, when allocation fails partway through, the partially allocated clusters are subtracted from sbi->used_clusters even though they were never added to it. This corrupts the free-space accounting and can cause sbi->used_clusters to underflow. Increment sbi->used_clusters together with p_chain->size as each cluster is allocated. This keeps the accounting consistent with __exfat_free_cluster() on both the success and error paths. This issue is caught by generic/476 with 256k cluster size: Ran: generic/476 Failures: generic/476 Failed 1 of 1 tests *** fsck.exfat output *** ERROR: <path>: more clusters are allocated. truncate to N bytes ... /dev/vdc: corrupted. directories 331, files 526 /dev/vdc: files corrupted 9, files fixed 0 *** end fsck.exfat output *** Fixes: d5c514b6a0c0 ("exfat: fix the newly allocated clusters are not freed in error handling") Signed-off-by: Chi Zhiling <chizhiling@kylinos.cn> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions