summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2026-07-09 10:27:13 +0200
committerJakub Kicinski <kuba@kernel.org>2026-07-21 11:14:08 -0700
commitede0f99cef53ae142ec9f54c705e4b1e48355fd3 (patch)
tree6ec5211d93ef80ca4fcbd86b7d46bab4df7eb358
parent6deab902b4c06abadeb5242db1488a17fd614e2b (diff)
net: mvneta: bm: fix device reference leak on failed lookup
Make sure to drop the reference taken to the buffer manager device when attempting to look up its driver data before the driver has been bound. Note that holding a reference to a device does not prevent its driver data from going away. Cc: stable+noautosel@kernel.org # untested fix to unlikely error path Cc: Gregory CLEMENT <gregory.clement@bootlin.com> Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com> Link: https://patch.msgid.link/20260709082713.829446-1-johan@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/marvell/mvneta_bm.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/ethernet/marvell/mvneta_bm.c b/drivers/net/ethernet/marvell/mvneta_bm.c
index e0c693c0a910..d6d76fbf27b6 100644
--- a/drivers/net/ethernet/marvell/mvneta_bm.c
+++ b/drivers/net/ethernet/marvell/mvneta_bm.c
@@ -397,9 +397,20 @@ static void mvneta_bm_put_sram(struct mvneta_bm *priv)
struct mvneta_bm *mvneta_bm_get(struct device_node *node)
{
- struct platform_device *pdev = of_find_device_by_node(node);
+ struct platform_device *pdev;
+ struct mvneta_bm *priv;
+
+ pdev = of_find_device_by_node(node);
+ if (!pdev)
+ return NULL;
+
+ priv = platform_get_drvdata(pdev);
+ if (!priv) {
+ platform_device_put(pdev);
+ return NULL;
+ }
- return pdev ? platform_get_drvdata(pdev) : NULL;
+ return priv;
}
EXPORT_SYMBOL_GPL(mvneta_bm_get);