diff options
author | Wang Hai <wanghai38@huawei.com> | 2022-11-20 07:24:38 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-11-23 13:41:54 +0100 |
commit | 1c40cde6b5171d9c8dfc69be00464fd1c75e210b (patch) | |
tree | da6ef93a602b57e13a5aed53f663812a765fac24 /drivers/net/arcnet | |
parent | Merge tag 'mlx5-fixes-2022-11-21' of git://git.kernel.org/pub/scm/linux/kerne... (diff) | |
download | linux-1c40cde6b5171d9c8dfc69be00464fd1c75e210b.tar.xz linux-1c40cde6b5171d9c8dfc69be00464fd1c75e210b.zip |
arcnet: fix potential memory leak in com20020_probe()
In com20020_probe(), if com20020_config() fails, dev and info
will not be freed, which will lead to a memory leak.
This patch adds freeing dev and info after com20020_config()
fails to fix this bug.
Compile tested only.
Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions")
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/arcnet')
-rw-r--r-- | drivers/net/arcnet/com20020_cs.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/arcnet/com20020_cs.c b/drivers/net/arcnet/com20020_cs.c index 24150c933fcb..dc3253b318da 100644 --- a/drivers/net/arcnet/com20020_cs.c +++ b/drivers/net/arcnet/com20020_cs.c @@ -113,6 +113,7 @@ static int com20020_probe(struct pcmcia_device *p_dev) struct com20020_dev *info; struct net_device *dev; struct arcnet_local *lp; + int ret = -ENOMEM; dev_dbg(&p_dev->dev, "com20020_attach()\n"); @@ -142,12 +143,18 @@ static int com20020_probe(struct pcmcia_device *p_dev) info->dev = dev; p_dev->priv = info; - return com20020_config(p_dev); + ret = com20020_config(p_dev); + if (ret) + goto fail_config; + + return 0; +fail_config: + free_arcdev(dev); fail_alloc_dev: kfree(info); fail_alloc_info: - return -ENOMEM; + return ret; } /* com20020_attach */ static void com20020_detach(struct pcmcia_device *link) |