]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: ethernet: mtk_ppe: Fix rhashtable leak in mtk_ppe_init error paths
authorWayen Yan <win847@gmail.com>
Wed, 17 Jun 2026 05:48:13 +0000 (13:48 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sun, 21 Jun 2026 21:33:43 +0000 (14:33 -0700)
In mtk_ppe_init(), when accounting is enabled, the error paths for
dmam_alloc_coherent(mib) and devm_kzalloc(acct) failures return NULL
directly, bypassing the err_free_l2_flows label that destroys the
rhashtable initialized earlier.

While this leak only occurs during probe (not runtime) and the leaked
memory is minimal (an empty rhash table), fixing it ensures proper
error path cleanup consistency.

Fix by changing the two return NULL statements to goto err_free_l2_flows.

Fixes: 603ea5e7ffa7 ("net: ethernet: mtk_eth_soc: fix memory leak in error path")
Signed-off-by: Wayen Yan <win847@gmail.com>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/178167550101.2217645.14579307712717502425@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mediatek/mtk_ppe.c

index 18279e2a7022ef058d0cf870e35338979c4e38e5..8451dc3fd00aa25f8a455bbcefdca0ae80d9a4c8 100644 (file)
@@ -918,7 +918,7 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base, int index)
                mib = dmam_alloc_coherent(ppe->dev, MTK_PPE_ENTRIES * sizeof(*mib),
                                          &ppe->mib_phys, GFP_KERNEL);
                if (!mib)
-                       return NULL;
+                       goto err_free_l2_flows;
 
                ppe->mib_table = mib;
 
@@ -926,7 +926,7 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_eth *eth, void __iomem *base, int index)
                                    GFP_KERNEL);
 
                if (!acct)
-                       return NULL;
+                       goto err_free_l2_flows;
 
                ppe->acct_table = acct;
        }