]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
exfat: fix double free in delayed_free
authorNamjae Jeon <linkinjeon@kernel.org>
Tue, 1 Apr 2025 04:50:39 +0000 (13:50 +0900)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 26 May 2025 11:25:23 +0000 (20:25 +0900)
The double free could happen in the following path.

exfat_create_upcase_table()
        exfat_create_upcase_table() : return error
        exfat_free_upcase_table() : free ->vol_utbl
        exfat_load_default_upcase_table : return error
     exfat_kill_sb()
           delayed_free()
                  exfat_free_upcase_table() <--------- double free
This patch set ->vol_util as NULL after freeing it.

Reported-by: Jianzhou Zhao <xnxc22xnxc22@qq.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/nls.c

index d47896a895965b7ed57b89f75ca53a757c74777a..1729bf42eb51694e2c303281443e362ac953579d 100644 (file)
@@ -801,4 +801,5 @@ load_default:
 void exfat_free_upcase_table(struct exfat_sb_info *sbi)
 {
        kvfree(sbi->vol_utbl);
+       sbi->vol_utbl = NULL;
 }