]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ksmbd: fix sd_ndr.data memory leak in ksmbd_vfs_set_sd_xattr
authorQiang Liu <liuqiang@kylinos.cn>
Wed, 24 Jun 2026 01:13:18 +0000 (09:13 +0800)
committerSteve French <stfrench@microsoft.com>
Wed, 1 Jul 2026 02:29:45 +0000 (21:29 -0500)
ndr_encode_v4_ntacl() allocates sd_ndr.data via kzalloc() at entry.
If any subsequent ndr_write_*() call returns error during encoding,
the allocated sd_ndr.data won't be freed and causes memory leak.

Move kfree(sd_ndr.data) into out label to ensure the buffer gets
released on all success and error return paths.

Signed-off-by: Qiang Liu <liuqiang@kylinos.cn>
Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/vfs.c

index f5fa22d8760361074781d614afc60348a28fc9ee..8e38c748d15bcd9515bc0d6a761afd04d6790cb7 100644 (file)
@@ -1487,8 +1487,8 @@ int ksmbd_vfs_set_sd_xattr(struct ksmbd_conn *conn,
        if (rc < 0)
                pr_err("Failed to store XATTR ntacl :%d\n", rc);
 
-       kfree(sd_ndr.data);
 out:
+       kfree(sd_ndr.data);
        kfree(acl_ndr.data);
        kfree(smb_acl);
        kfree(def_smb_acl);