summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQiang Liu <liuqiang@kylinos.cn>2026-06-24 09:13:20 +0800
committerSteve French <stfrench@microsoft.com>2026-06-30 21:29:45 -0500
commit7ac657bb9c5c1b0f7bdf1fa6d3ad532f969be5cf (patch)
tree8c5a641480cd2f5f573f4669066cfa4bd2268e48
parentd708a36634bb7b6f94d0e76d587d2ec50b2b93b5 (diff)
ksmbd: fix n.data memory leak in ksmbd_vfs_set_dos_attrib_xattr
Free ndr buffer data when ndr_encode_dos_attr() returns error to avoid memory leak. 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>
-rw-r--r--fs/smb/server/vfs.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/smb/server/vfs.c b/fs/smb/server/vfs.c
index 6528412eac2d..d0a0ad15d803 100644
--- a/fs/smb/server/vfs.c
+++ b/fs/smb/server/vfs.c
@@ -1575,14 +1575,15 @@ int ksmbd_vfs_set_dos_attrib_xattr(struct mnt_idmap *idmap,
err = ndr_encode_dos_attr(&n, da);
if (err)
- return err;
+ goto out;
err = ksmbd_vfs_setxattr(idmap, path, XATTR_NAME_DOS_ATTRIBUTE,
(void *)n.data, n.offset, 0, get_write);
if (err)
ksmbd_debug(SMB, "failed to store dos attribute in xattr\n");
- kfree(n.data);
+out:
+ kfree(n.data);
return err;
}