]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:05:28 +0000 (11:05 +0100)
[ Upstream commit 1f3d9724e16d62c7d42c67d6613b8512f2887c22 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/exfat/nls.c

index 314d5407a1be50ac2c789c8a58afda8e1baec413..a75d5fb2404c7c7ecc1f85506d978bbe6f9dd5a3 100644 (file)
@@ -804,4 +804,5 @@ load_default:
 void exfat_free_upcase_table(struct exfat_sb_info *sbi)
 {
        kvfree(sbi->vol_utbl);
+       sbi->vol_utbl = NULL;
 }