net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change
authorXiyu Yang <xiyuyang19@fudan.edu.cn>
Thu, 9 Sep 2021 04:32:38 +0000 (12:32 +0800)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Thu, 13 Jan 2022 14:36:58 +0000 (09:36 -0500)
commit776d794f28c95051bc70405a7b1fa40115658a18
tree4b86ad2c5219d924796eb7c5727874f112f8f806
parent4ca9f31a2be66d5fbf34b5b91ef17de7480992e1
net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change

The refcount leak issues take place in an error handling path. When the
3rd argument buf doesn't match with "offline", "online" or "remove", the
function simply returns -EINVAL and forgets to decrease the reference
count of a rpc_xprt object and a rpc_xprt_switch object increased by
rpc_sysfs_xprt_kobj_get_xprt() and
rpc_sysfs_xprt_kobj_get_xprt_switch(), causing reference count leaks of
both unused objects.

Fix this issue by jumping to the error handling path labelled with
out_put when buf matches none of "offline", "online" or "remove".

Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/sysfs.c