Re: [PATCH v2] tg3: clean up PHYLIB resources on probe failure

From: Andrew Lunn

Date: Tue Sep 15 2026 - 12:02:07 EST


On Mon, Sep 14, 2026 at 06:22:46PM -0400, Myeonghun Pak wrote:
> tg3_get_invariants() can register an MDIO bus and connect a PHY for
> USE_PHYLIB devices. If tg3_init_one() later fails, its common error path
> releases the mappings and netdev without undoing those PHYLIB resources.
>
> Disconnect the PHY and unregister the MDIO bus before the remaining
> teardown. The existing IS_CONNECTED and MDIOBUS_INITED flags make both
> helpers safe when initialization only completed partially.
>
> This issue was identified during our ongoing static-analysis research while
> reviewing kernel code.
>
> Fixes: 158d7abdae85 ("tg3: Add mdio bus registration")
> Assisted-by: OpenAI:GPT-5.6
> Co-developed-by: Ijae Kim <ae878000@xxxxxxxxx>
> Signed-off-by: Ijae Kim <ae878000@xxxxxxxxx>
> Signed-off-by: Myeonghun Pak <mhun512@xxxxxxxxx>
> ---
> Changes in v2:
> - Remove the redundant USE_PHYLIB guard; both cleanup helpers already
> check their initialization flags, as discussed with Andrew Lunn.

That is not exactly what i said. I pointed out that tg3_mdio_init() is
not guarded by USE_PHYLIB. tg3_phy_init() is guarded by
USE_PHYLIB. Generally, you keep code symmetrical, the conditions you
apply to init should be also applied to fini. However, the existing
code is not great, tg3_remove_one() is not symmetrical. However, there
is no reason to make it worse.


Andrew

---
pw-bot: cr