* [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path
@ 2022-11-20 5:52 Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 1/2] net: ethernet: mtk_eth_soc: fix resource " Yan Cangang
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Yan Cangang @ 2022-11-20 5:52 UTC (permalink / raw)
To: leon, kuba, Mark-MC.Lee, john, nbd, sean.wang; +Cc: netdev, Yan Cangang
v1: https://lore.kernel.org/netdev/20221112233239.824389-1-nalanzeyu@gmail.com/T/
v2:
- clean up commit message
- new mtk_ppe_deinit() function, call it before calling mtk_mdio_cleanup()
v3:
- split into two patches
Yan Cangang (2):
net: ethernet: mtk_eth_soc: fix resource leak in error path
net: ethernet: mtk_eth_soc: fix memory leak in error path
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 9 +++++----
drivers/net/ethernet/mediatek/mtk_ppe.c | 19 +++++++++++++++++--
drivers/net/ethernet/mediatek/mtk_ppe.h | 1 +
3 files changed, 23 insertions(+), 6 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net v3 1/2] net: ethernet: mtk_eth_soc: fix resource leak in error path
2022-11-20 5:52 [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path Yan Cangang
@ 2022-11-20 5:52 ` Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 2/2] net: ethernet: mtk_eth_soc: fix memory " Yan Cangang
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Yan Cangang @ 2022-11-20 5:52 UTC (permalink / raw)
To: leon, kuba, Mark-MC.Lee, john, nbd, sean.wang; +Cc: netdev, Yan Cangang
In mtk_probe(), when mtk_ppe_init() or mtk_eth_offload_init() failed,
mtk_mdio_cleanup() isn't called. Fix it.
Fixes: ba37b7caf1ed ("net: ethernet: mtk_eth_soc: add support for initializing the PPE")
Fixes: 502e84e2382d ("net: ethernet: mtk_eth_soc: add flow offloading support")
Signed-off-by: Yan Cangang <nalanzeyu@gmail.com>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 1d1f2342e3ec..16269c6c09ac 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4145,13 +4145,13 @@ static int mtk_probe(struct platform_device *pdev)
eth->soc->offload_version, i);
if (!eth->ppe[i]) {
err = -ENOMEM;
- goto err_free_dev;
+ goto err_deinit_mdio;
}
}
err = mtk_eth_offload_init(eth);
if (err)
- goto err_free_dev;
+ goto err_deinit_mdio;
}
for (i = 0; i < MTK_MAX_DEVS; i++) {
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net v3 2/2] net: ethernet: mtk_eth_soc: fix memory leak in error path
2022-11-20 5:52 [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 1/2] net: ethernet: mtk_eth_soc: fix resource " Yan Cangang
@ 2022-11-20 5:52 ` Yan Cangang
2022-11-22 12:46 ` [PATCH net v3 0/2] " Leon Romanovsky
2022-11-23 5:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Yan Cangang @ 2022-11-20 5:52 UTC (permalink / raw)
To: leon, kuba, Mark-MC.Lee, john, nbd, sean.wang; +Cc: netdev, Yan Cangang
In mtk_ppe_init(), when dmam_alloc_coherent() or devm_kzalloc() failed,
the rhashtable ppe->l2_flows isn't destroyed. Fix it.
In mtk_probe(), when mtk_ppe_init() or mtk_eth_offload_init() or
register_netdev() failed, have the same problem. Fix it.
Fixes: 33fc42de3327 ("net: ethernet: mtk_eth_soc: support creating mac address based offload entries")
Signed-off-by: Yan Cangang <nalanzeyu@gmail.com>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 9 +++++----
drivers/net/ethernet/mediatek/mtk_ppe.c | 19 +++++++++++++++++--
drivers/net/ethernet/mediatek/mtk_ppe.h | 1 +
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 16269c6c09ac..142d12214ef6 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -4145,13 +4145,13 @@ static int mtk_probe(struct platform_device *pdev)
eth->soc->offload_version, i);
if (!eth->ppe[i]) {
err = -ENOMEM;
- goto err_deinit_mdio;
+ goto err_deinit_ppe;
}
}
err = mtk_eth_offload_init(eth);
if (err)
- goto err_deinit_mdio;
+ goto err_deinit_ppe;
}
for (i = 0; i < MTK_MAX_DEVS; i++) {
@@ -4161,7 +4161,7 @@ static int mtk_probe(struct platform_device *pdev)
err = register_netdev(eth->netdev[i]);
if (err) {
dev_err(eth->dev, "error bringing up device\n");
- goto err_deinit_mdio;
+ goto err_deinit_ppe;
} else
netif_info(eth, probe, eth->netdev[i],
"mediatek frame engine at 0x%08lx, irq %d\n",
@@ -4179,7 +4179,8 @@ static int mtk_probe(struct platform_device *pdev)
return 0;
-err_deinit_mdio:
+err_deinit_ppe:
+ mtk_ppe_deinit(eth);
mtk_mdio_cleanup(eth);
err_free_dev:
mtk_free_dev(eth);
diff --git a/drivers/net/ethernet/mediatek/mtk_ppe.c b/drivers/net/ethernet/mediatek/mtk_ppe.c
index 2d8ca99f2467..784ecb2dc9fb 100644
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
@@ -737,7 +737,7 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base,
MTK_PPE_ENTRIES * soc->foe_entry_size,
&ppe->foe_phys, GFP_KERNEL);
if (!foe)
- return NULL;
+ goto err_free_l2_flows;
ppe->foe_table = foe;
@@ -745,11 +745,26 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base,
sizeof(*ppe->foe_flow);
ppe->foe_flow = devm_kzalloc(dev, foe_flow_size, GFP_KERNEL);
if (!ppe->foe_flow)
- return NULL;
+ goto err_free_l2_flows;
mtk_ppe_debugfs_init(ppe, index);
return ppe;
+
+err_free_l2_flows:
+ rhashtable_destroy(&ppe->l2_flows);
+ return NULL;
+}
+
+void mtk_ppe_deinit(struct mtk_eth *eth)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(eth->ppe); i++) {
+ if (!eth->ppe[i])
+ return;
+ rhashtable_destroy(ð->ppe[i]->l2_flows);
+ }
}
static void mtk_ppe_init_foe_table(struct mtk_ppe *ppe)
diff --git a/drivers/net/ethernet/mediatek/mtk_ppe.h b/drivers/net/ethernet/mediatek/mtk_ppe.h
index 0b7a67a958e4..a09c32539bcc 100644
--- a/drivers/net/ethernet/mediatek/mtk_ppe.h
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.h
@@ -304,6 +304,7 @@ struct mtk_ppe {
struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base,
int version, int index);
+void mtk_ppe_deinit(struct mtk_eth *eth);
void mtk_ppe_start(struct mtk_ppe *ppe);
int mtk_ppe_stop(struct mtk_ppe *ppe);
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path
2022-11-20 5:52 [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 1/2] net: ethernet: mtk_eth_soc: fix resource " Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 2/2] net: ethernet: mtk_eth_soc: fix memory " Yan Cangang
@ 2022-11-22 12:46 ` Leon Romanovsky
2022-11-23 5:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Leon Romanovsky @ 2022-11-22 12:46 UTC (permalink / raw)
To: Yan Cangang; +Cc: kuba, Mark-MC.Lee, john, nbd, sean.wang, netdev
On Sun, Nov 20, 2022 at 01:52:57PM +0800, Yan Cangang wrote:
> v1: https://lore.kernel.org/netdev/20221112233239.824389-1-nalanzeyu@gmail.com/T/
> v2:
> - clean up commit message
> - new mtk_ppe_deinit() function, call it before calling mtk_mdio_cleanup()
> v3:
> - split into two patches
>
> Yan Cangang (2):
> net: ethernet: mtk_eth_soc: fix resource leak in error path
> net: ethernet: mtk_eth_soc: fix memory leak in error path
>
Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path
2022-11-20 5:52 [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path Yan Cangang
` (2 preceding siblings ...)
2022-11-22 12:46 ` [PATCH net v3 0/2] " Leon Romanovsky
@ 2022-11-23 5:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-11-23 5:00 UTC (permalink / raw)
To: Yan Cangang; +Cc: leon, kuba, Mark-MC.Lee, john, nbd, sean.wang, netdev
Hello:
This series was applied to netdev/net.git (master)
by Jakub Kicinski <kuba@kernel.org>:
On Sun, 20 Nov 2022 13:52:57 +0800 you wrote:
> v1: https://lore.kernel.org/netdev/20221112233239.824389-1-nalanzeyu@gmail.com/T/
> v2:
> - clean up commit message
> - new mtk_ppe_deinit() function, call it before calling mtk_mdio_cleanup()
> v3:
> - split into two patches
>
> [...]
Here is the summary with links:
- [net,v3,1/2] net: ethernet: mtk_eth_soc: fix resource leak in error path
https://git.kernel.org/netdev/net/c/8110437e5961
- [net,v3,2/2] net: ethernet: mtk_eth_soc: fix memory leak in error path
https://git.kernel.org/netdev/net/c/603ea5e7ffa7
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-23 5:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-20 5:52 [PATCH net v3 0/2] net: ethernet: mtk_eth_soc: fix memory leak in error path Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 1/2] net: ethernet: mtk_eth_soc: fix resource " Yan Cangang
2022-11-20 5:52 ` [PATCH net v3 2/2] net: ethernet: mtk_eth_soc: fix memory " Yan Cangang
2022-11-22 12:46 ` [PATCH net v3 0/2] " Leon Romanovsky
2022-11-23 5:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).