smb: client: fix possible double free in smb2_set_ea()
authorSu Hui <suhui@nfschina.com>
Tue, 15 Oct 2024 10:20:37 +0000 (18:20 +0800)
committerSteve French <stfrench@microsoft.com>
Wed, 16 Oct 2024 05:25:54 +0000 (00:25 -0500)
commit19ebc1e6cab334a8193398d4152deb76019b5d34
tree9efaef72f042365777b2976ff67977cf67c2a20d
parent8e929cb546ee42c9a61d24fae60605e9e3192354
smb: client: fix possible double free in smb2_set_ea()

Clang static checker(scan-build) warning:
fs/smb/client/smb2ops.c:1304:2: Attempt to free released memory.
 1304 |         kfree(ea);
      |         ^~~~~~~~~

There is a double free in such case:
'ea is initialized to NULL' -> 'first successful memory allocation for
ea' -> 'something failed, goto sea_exit' -> 'first memory release for ea'
-> 'goto replay_again' -> 'second goto sea_exit before allocate memory
for ea' -> 'second memory release for ea resulted in double free'.

Re-initialie 'ea' to NULL near to the replay_again label, it can fix this
double free problem.

Fixes: 4f1fffa23769 ("cifs: commands that are retried should have replay flag set")
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Su Hui <suhui@nfschina.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smb2ops.c