* [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe()
@ 2026-10-30 8:58 laixiangwu
2026-10-30 9:03 ` netdev-bot+sinfo
2026-11-03 9:43 ` netdev-bot+sashiko
0 siblings, 2 replies; 3+ messages in thread
From: laixiangwu @ 2026-10-30 8:58 UTC (permalink / raw)
To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: MD Danish Anwar, Roger Quadros, linux-arm-kernel, netdev,
linux-kernel, laixiangwu
prueth_probe() takes references on the eth0_node/eth1_node device nodes
with of_node_get() and stores them in prueth->eth_node[]. If either of
the "ti,mii-g-rt" or "ti,mii-rt" syscon regmap lookups fails, probe()
returns -ENODEV without dropping those references, leaking the device
nodes.
Jump to the existing put_cores label so the error path releases the
eth0_node/eth1_node references like all the other failure paths in the
function do.
Fixes: e654b85a693e ("net: ti: icssg-prueth: Add ICSSG Ethernet driver for AM65x SR1.0 platforms")
Signed-off-by: laixiangwu <laixiangwu@cmss.chinamobile.com>
---
drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
index b8115ca47..ef1dc32ff 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
@@ -963,13 +963,15 @@ static int prueth_probe(struct platform_device *pdev)
prueth->miig_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-g-rt");
if (IS_ERR(prueth->miig_rt)) {
dev_err(dev, "couldn't get ti,mii-g-rt syscon regmap\n");
- return -ENODEV;
+ ret = -ENODEV;
+ goto put_cores;
}
prueth->mii_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-rt");
if (IS_ERR(prueth->mii_rt)) {
dev_err(dev, "couldn't get ti,mii-rt syscon regmap\n");
- return -ENODEV;
+ ret = -ENODEV;
+ goto put_cores;
}
if (eth0_node) {
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe()
2026-10-30 8:58 [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe() laixiangwu
@ 2026-10-30 9:03 ` netdev-bot+sinfo
2026-11-03 9:43 ` netdev-bot+sashiko
1 sibling, 0 replies; 3+ messages in thread
From: netdev-bot+sinfo @ 2026-10-30 9:03 UTC (permalink / raw)
To: laixiangwu
Cc: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, MD Danish Anwar, Roger Quadros, linux-arm-kernel,
netdev, linux-kernel
Hi!
This is an automated message. This series looks like a fix, but its
commit messages seem to be missing some information:
- How the issue was discovered, e.g. hit in production, hit during
development, syzbot report, manual code inspection, LLM or static
analysis tool scan.
- Whether the issue was actually triggered, or is only theoretical
(e.g. found by code inspection). If it was triggered please include
the symptoms, like the stack trace or error messages.
- What hardware the change was tested on. For driver fixes please
mention the device (and if relevant firmware version) used for
testing, or say that the change was not tested on real hardware.
Please do not repost the series just to address the above. Instead,
reply to this email with the missing information, so that reviewers
can take it into account. If the series needs another revision for
other reasons, please include the information in the commit messages
then.
The evaluation is done by an LLM so it may be wrong, if you think
that is the case please reply and explain.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe()
2026-10-30 8:58 [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe() laixiangwu
2026-10-30 9:03 ` netdev-bot+sinfo
@ 2026-11-03 9:43 ` netdev-bot+sashiko
1 sibling, 0 replies; 3+ messages in thread
From: netdev-bot+sashiko @ 2026-11-03 9:43 UTC (permalink / raw)
To: laixiangwu
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, danishanwar,
rogerq, linux-arm-kernel, netdev, linux-kernel
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider.
Critical: 0 · High: 0 · Medium: 1 · Low: 0
If you believe none of the issues are legitimate, please reply to each
issue of Medium severity or higher and explain why the AI is wrong.
If any of them are legitimate and you plan to respin, please let patchwork
know by including "pw-bot: cr" as a separate line at the end of your reply
(one such reply per series is enough).
- [Medium] The same leak is still present in the sister ICSSG driver.
--
net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe()
In the SR1.0 driver, prueth_probe() returned -ENODEV directly when the
"ti,mii-g-rt" or "ti,mii-rt" syscon regmap lookup failed. That return
leaked the eth0_node/eth1_node references taken with of_node_get(). The
patch sends both error paths to the existing put_cores label instead.
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> index b8115ca47082f..ef1dc32ff8b46 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> @@ -963,13 +963,15 @@ static int prueth_probe(struct platform_device *pdev)
> prueth->miig_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-g-rt");
> if (IS_ERR(prueth->miig_rt)) {
> dev_err(dev, "couldn't get ti,mii-g-rt syscon regmap\n");
> - return -ENODEV;
> + ret = -ENODEV;
> + goto put_cores;
> }
>
> prueth->mii_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-rt");
> if (IS_ERR(prueth->mii_rt)) {
> dev_err(dev, "couldn't get ti,mii-rt syscon regmap\n");
> - return -ENODEV;
> + ret = -ENODEV;
> + goto put_cores;
> }
[Severity: Medium]
The SR1 change looks correct. Does the sister driver still leak the
port@0/port@1 device_node references the same way?
prueth_probe() in drivers/net/ethernet/ti/icssg/icssg_prueth.c parses the
ports the same way. It calls of_node_get(eth_node) for each port and stores
the results in prueth->eth_node[]. It still returns directly on both syscon
lookup failures:
drivers/net/ethernet/ti/icssg/icssg_prueth.c:prueth_probe() {
...
prueth->miig_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-g-rt");
if (IS_ERR(prueth->miig_rt)) {
dev_err(dev, "couldn't get ti,mii-g-rt syscon regmap\n");
return -ENODEV;
}
prueth->mii_rt = syscon_regmap_lookup_by_phandle(np, "ti,mii-rt");
if (IS_ERR(prueth->mii_rt)) {
dev_err(dev, "couldn't get ti,mii-rt syscon regmap\n");
return -ENODEV;
}
...
put_cores:
if (eth0_node || eth1_node) {
prueth_put_cores(prueth, ICSS_SLICE0);
of_node_put(eth0_node);
...
}
Both returns skip put_cores, which is the only place eth0_node and
eth1_node get released.
The same ret = -ENODEV; goto put_cores; change should work there without
modification:
- prueth is allocated with devm_kzalloc().
- prueth_put_cores() NULL-checks the core handles.
- of_node_put(NULL) is a no-op.
Valid DTs can reach this path. The ti,icssg-prueth.yaml binding does not
list "ti,mii-rt" under required, so an AM64x/AM65x SR2.0 DT without that
phandle would leak these references on every probe attempt.
The SR2 driver would need a different Fixes: tag, so could this be sent as
a separate companion patch rather than folded into this one?
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261030085851.2019-1-laixiangwu%40cmss.chinamobile.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-03 9:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-30 8:58 [PATCH] net: ti: icssg-prueth-sr1: Fix device_node refcount leak in prueth_probe() laixiangwu
2026-10-30 9:03 ` netdev-bot+sinfo
2026-11-03 9:43 ` netdev-bot+sashiko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®