caif: fix memory leak in cfctrl_linkup_request()
authorZhengchao Shao <shaozhengchao@huawei.com>
Wed, 4 Jan 2023 06:51:46 +0000 (14:51 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 5 Jan 2023 09:19:36 +0000 (10:19 +0100)
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>
net/caif/cfctrl.c

index cc405d8..8480684 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;