exfat: free new directory cluster if zeroing fails

exfat_alloc_new_dir() allocates a cluster for a new directory before
zeroing it.  If exfat_zeroed_cluster() fails, the function returns the
error but leaves the allocated cluster in use.

Free the newly allocated cluster before returning the zeroing error.

Signed-off-by: Yichong Chen <chenyichong@uniontech.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
Yichong Chen 2026-07-28 12:29:23 +08:00 committed by Namjae Jeon
parent 896fcc9357
commit ce12a39bed

View File

@ -299,7 +299,13 @@ int exfat_alloc_new_dir(struct inode *inode, struct exfat_chain *clu)
if (ret)
return ret;
return exfat_zeroed_cluster(inode, clu->dir);
ret = exfat_zeroed_cluster(inode, clu->dir);
if (ret) {
exfat_free_cluster(inode, clu);
return ret;
}
return 0;
}
int exfat_calc_num_entries(struct exfat_uni_name *p_uniname)