caif: fix memory leak in cfctrl_linkup_request()
authorZhengchao Shao <shaozhengchao@huawei.com>
Wed, 4 Jan 2023 06:51:46 +0000 (14:51 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2023 10:59:16 +0000 (11:59 +0100)
[ Upstream commit fe69230f05897b3de758427b574fc98025dfc907 ]

When linktype is unknown or kzalloc failed in cfctrl_linkup_request(),
pkt is not released. Add release process to error path.

Fixes: b482cd2053e3 ("net-caif: add CAIF core protocol stack")
Fixes: 8d545c8f958f ("caif: Disconnect without waiting for response")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20230104065146.1153009-1-shaozhengchao@huawei.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/caif/cfctrl.c

index 2809cbd..d8cb4b2 100644 (file)
@@ -269,11 +269,15 @@ int cfctrl_linkup_request(struct cflayer *layer,
        default:
                pr_warn("Request setup of bad link type = %d\n",
                        param->linktype);
+               cfpkt_destroy(pkt);
                return -EINVAL;
        }
        req = kzalloc(sizeof(*req), GFP_KERNEL);
-       if (!req)
+       if (!req) {
+               cfpkt_destroy(pkt);
                return -ENOMEM;
+       }
+
        req->client_layer = user_layer;
        req->cmd = CFCTRL_CMD_LINK_SETUP;
        req->param = *param;