All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jakub Kicinski <kuba@kernel.org>
Cc: linux-stm32@st-md-mailman.stormreply.com, andrew+netdev@lunn.ch,
	linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org,
	pabeni@redhat.com, linux-rockchip@lists.infradead.org,
	heiko@sntech.de, alexandre.torgue@foss.st.com, andrew@lunn.ch,
	davem@davemloft.net, edumazet@google.com
Subject: Re: [net-next,v2,06/22] net: stmmac: rk: add SoC specific ->init() method
Date: Tue, 27 Jan 2026 11:09:58 +0000	[thread overview]
Message-ID: <aXidBha0FahIS6Du@shell.armlinux.org.uk> (raw)
In-Reply-To: <aXgMIYPiL9JK-c_K@shell.armlinux.org.uk>

On Tue, Jan 27, 2026 at 12:51:45AM +0000, Russell King (Oracle) wrote:
> On Mon, Jan 26, 2026 at 04:40:20PM -0800, Jakub Kicinski wrote:
> > This is an AI-generated review of your patch. The human sending this
> > email has considered the AI review valid, or at least plausible.
> > 
> > For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
> > ---
> > net: stmmac: rk: add SoC specific ->init() method
> > 
> > This commit adds infrastructure for SoC-specific initialization by adding
> > an init callback to rk_gmac_ops and calling it from rk_gmac_setup().
> > 
> > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > > index 7f8ffd1549bc..4117f6863ff0 100644
> > > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > 
> > [ ... ]
> > 
> > > @@ -1618,6 +1619,14 @@ static struct rk_priv_data *rk_gmac_setup(struct platform_device *pdev,
> > >
> > >  	bsp_priv->dev = dev;
> > >
> > > +	if (ops->init) {
> > > +		ret = ops->init(bsp_priv);
> > > +		if (ret) {
> > > +			dev_err_probe(dev, ret, "failed to init BSP\n");
> > > +			return ERR_PTR(ret);
> >                         ^^^^^^^^^^^^^^^
> > 
> > If ops->init() fails here, does bsp_priv->phy_reset need to be released?
> > 
> > Earlier in rk_gmac_setup(), at line 1610, the code calls:
> > 
> >     bsp_priv->phy_reset = of_reset_control_get(plat->phy_node, NULL);
> > 
> > of_reset_control_get() is not a devm-managed function, so the reset control
> > would need to be explicitly released with reset_control_put() on error paths.
> > 
> > This new error return happens after phy_reset could have been acquired (when
> > the device has an integrated PHY), but before the function successfully
> > returns. If this path is taken, it appears the reset control would be leaked.
> > 
> > Currently no SoC sets ops->init so this path cannot trigger, but when a
> > future SoC implements this callback, the leak would occur on init failure
> > for devices with integrated PHYs.
> 
> However, the driver does not release this resource when cleaning up, so
> that's already a bug as the driver currently stands. I think this could
> be converted to devm_reset_control_get(), which would resolve both
> leakages, but not sure.

Note that fixing this is going to add yet another patch to the series,
because this is a pre-existing bug in the driver. It can't be replaced
with devm_reset_control_get(), because this driver is getting resources
for a foreign device (we don't have the struct device pointer.)

So, it isn't going to be a simple patch to fix this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!


WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jakub Kicinski <kuba@kernel.org>
Cc: linux-stm32@st-md-mailman.stormreply.com, andrew+netdev@lunn.ch,
	linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org,
	pabeni@redhat.com, linux-rockchip@lists.infradead.org,
	heiko@sntech.de, alexandre.torgue@foss.st.com, andrew@lunn.ch,
	davem@davemloft.net, edumazet@google.com
Subject: Re: [net-next,v2,06/22] net: stmmac: rk: add SoC specific ->init() method
Date: Tue, 27 Jan 2026 11:09:58 +0000	[thread overview]
Message-ID: <aXidBha0FahIS6Du@shell.armlinux.org.uk> (raw)
In-Reply-To: <aXgMIYPiL9JK-c_K@shell.armlinux.org.uk>

On Tue, Jan 27, 2026 at 12:51:45AM +0000, Russell King (Oracle) wrote:
> On Mon, Jan 26, 2026 at 04:40:20PM -0800, Jakub Kicinski wrote:
> > This is an AI-generated review of your patch. The human sending this
> > email has considered the AI review valid, or at least plausible.
> > 
> > For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
> > ---
> > net: stmmac: rk: add SoC specific ->init() method
> > 
> > This commit adds infrastructure for SoC-specific initialization by adding
> > an init callback to rk_gmac_ops and calling it from rk_gmac_setup().
> > 
> > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > > index 7f8ffd1549bc..4117f6863ff0 100644
> > > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
> > 
> > [ ... ]
> > 
> > > @@ -1618,6 +1619,14 @@ static struct rk_priv_data *rk_gmac_setup(struct platform_device *pdev,
> > >
> > >  	bsp_priv->dev = dev;
> > >
> > > +	if (ops->init) {
> > > +		ret = ops->init(bsp_priv);
> > > +		if (ret) {
> > > +			dev_err_probe(dev, ret, "failed to init BSP\n");
> > > +			return ERR_PTR(ret);
> >                         ^^^^^^^^^^^^^^^
> > 
> > If ops->init() fails here, does bsp_priv->phy_reset need to be released?
> > 
> > Earlier in rk_gmac_setup(), at line 1610, the code calls:
> > 
> >     bsp_priv->phy_reset = of_reset_control_get(plat->phy_node, NULL);
> > 
> > of_reset_control_get() is not a devm-managed function, so the reset control
> > would need to be explicitly released with reset_control_put() on error paths.
> > 
> > This new error return happens after phy_reset could have been acquired (when
> > the device has an integrated PHY), but before the function successfully
> > returns. If this path is taken, it appears the reset control would be leaked.
> > 
> > Currently no SoC sets ops->init so this path cannot trigger, but when a
> > future SoC implements this callback, the leak would occur on init failure
> > for devices with integrated PHYs.
> 
> However, the driver does not release this resource when cleaning up, so
> that's already a bug as the driver currently stands. I think this could
> be converted to devm_reset_control_get(), which would resolve both
> leakages, but not sure.

Note that fixing this is going to add yet another patch to the series,
because this is a pre-existing bug in the driver. It can't be replaced
with devm_reset_control_get(), because this driver is getting resources
for a foreign device (we don't have the struct device pointer.)

So, it isn't going to be a simple patch to fix this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2026-01-27 11:10 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-26 11:44 [PATCH net-next v2 00/22] net: stmmac: rk: simplify per-SoC configuration Russell King (Oracle)
2026-01-26 11:44 ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 01/22] net: stmmac: rk: avoid phy_power_on() Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 02/22] net: stmmac: rk: get rid of rk_phy_power_ctl() Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 03/22] net: stmmac: rk: convert rk3328 to use bsp_priv->id Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 04/22] net: stmmac: rk: group MACPHY register offset and fields together Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 05/22] net: stmmac: rk: add GMAC_CLK_xx constants, simplify RGMII definitions Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 06/22] net: stmmac: rk: add SoC specific ->init() method Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 14:34   ` Russell King (Oracle)
2026-01-26 14:34     ` Russell King (Oracle)
2026-01-27  0:51     ` Jakub Kicinski
2026-01-27  0:51       ` Jakub Kicinski
2026-01-27  0:59       ` Russell King (Oracle)
2026-01-27  0:59         ` Russell King (Oracle)
2026-01-27  1:16         ` Jakub Kicinski
2026-01-27  1:16           ` Jakub Kicinski
2026-01-27  1:55           ` Russell King (Oracle)
2026-01-27  1:55             ` Russell King (Oracle)
2026-01-27  2:54             ` Jakub Kicinski
2026-01-27  2:54               ` Jakub Kicinski
2026-01-27  0:40   ` [net-next,v2,06/22] " Jakub Kicinski
2026-01-27  0:40     ` Jakub Kicinski
2026-01-27  0:51     ` Russell King (Oracle)
2026-01-27  0:51       ` Russell King (Oracle)
2026-01-27 11:09       ` Russell King (Oracle) [this message]
2026-01-27 11:09         ` Russell King (Oracle)
2026-01-27 16:18         ` Jakub Kicinski
2026-01-27 16:18           ` Jakub Kicinski
2026-01-27 16:42           ` Russell King (Oracle)
2026-01-27 16:42             ` Russell King (Oracle)
2026-01-27 18:38             ` Jakub Kicinski
2026-01-27 18:38               ` Jakub Kicinski
2026-01-26 11:45 ` [PATCH net-next v2 07/22] net: stmmac: rk: convert to mask-based interface mode configuration Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-27  0:40   ` [net-next,v2,07/22] " Jakub Kicinski
2026-01-27  0:40     ` Jakub Kicinski
2026-01-27  0:53     ` Russell King (Oracle)
2026-01-27  0:53       ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 08/22] net: stmmac: rk: convert rk3588 to mask-based interface mode config Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 22:19   ` kernel test robot
2026-01-26 22:19     ` kernel test robot
2026-01-27  0:41   ` [net-next,v2,08/22] " Jakub Kicinski
2026-01-27  0:41     ` Jakub Kicinski
2026-01-26 11:45 ` [PATCH net-next v2 09/22] net: stmmac: rk: move speed GRF register offset to private data Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 10/22] net: stmmac: rk: convert rk3588 to rk_set_reg_speed() Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 11/22] net: stmmac: rk: remove rk3528 RMII clock initialisation Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:45 ` [PATCH net-next v2 12/22] net: stmmac: rk: use rk_encode_wm16() for RGMII clocks Russell King (Oracle)
2026-01-26 11:45   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 13/22] net: stmmac: rk: use rk_encode_wm16() for RMII speed Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 14/22] net: stmmac: rk: use rk_encode_wm16() for RMII clock Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 15/22] net: stmmac: rk: remove need for ->set_speed() method Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 16/22] net: stmmac: rk: convert px30 Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 17/22] net: stmmac: rk: introduce flags indicating support for RGMII/RMII Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 18/22] net: stmmac: rk: replace empty set_to_rmii() with supports_rmii Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 19/22] net: stmmac: rk: rk3328: gmac2phy only supports RMII Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 20/22] net: stmmac: rk: rk3528: gmac0 " Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-26 11:46 ` [PATCH net-next v2 21/22] net: stmmac: rk: use rk_encode_wm16() for clock selection Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-27  0:41   ` [net-next,v2,21/22] " Jakub Kicinski
2026-01-27  0:41     ` Jakub Kicinski
2026-01-26 11:46 ` [PATCH net-next v2 22/22] net: stmmac: rk: rk3506, rk3528 and kk3588 have rmii_mode in clock register Russell King (Oracle)
2026-01-26 11:46   ` Russell King (Oracle)
2026-01-27  0:41   ` [net-next,v2,22/22] " Jakub Kicinski
2026-01-27  0:41     ` Jakub Kicinski
2026-01-27 19:00 ` [PATCH net-next v2 00/22] net: stmmac: rk: simplify per-SoC configuration patchwork-bot+netdevbpf
2026-01-27 19:00   ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aXidBha0FahIS6Du@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=heiko@sntech.de \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.