Skip to content

Commit 8fc52e4

Browse files
Jethro Donaldsonjfvogel
authored andcommitted
smb: client: fix memory leak during error handling for POSIX mkdir
commit 1fe4a44b7fa3955bcb7b4067c07b778fe90d8ee7 upstream. The response buffer for the CREATE request handled by smb311_posix_mkdir() is leaked on the error path (goto err_free_rsp_buf) because the structure pointer *rsp passed to free_rsp_buf() is not assigned until *after* the error condition is checked. As *rsp is initialised to NULL, free_rsp_buf() becomes a no-op and the leak is instead reported by __kmem_cache_shutdown() upon subsequent rmmod of cifs.ko if (and only if) the error path has been hit. Pass rsp_iov.iov_base to free_rsp_buf() instead, similar to the code in other functions in smb2pdu.c for which *rsp is assigned late. Cc: [email protected] Signed-off-by: Jethro Donaldson <[email protected]> Signed-off-by: Steve French <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> (cherry picked from commit d0df124437cc50b88e4e61cd3230949e6049d18c) Signed-off-by: Jack Vogel <[email protected]>
1 parent 3281884 commit 8fc52e4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

fs/smb/client/smb2pdu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2985,7 +2985,7 @@ int smb311_posix_mkdir(const unsigned int xid, struct inode *inode,
29852985
/* Eventually save off posix specific response info and timestamps */
29862986

29872987
err_free_rsp_buf:
2988-
free_rsp_buf(resp_buftype, rsp);
2988+
free_rsp_buf(resp_buftype, rsp_iov.iov_base);
29892989
kfree(pc_buf);
29902990
err_free_req:
29912991
cifs_small_buf_release(req);

0 commit comments

Comments
 (0)