From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Abhishek Chauhan (ABC)" <quic_abchauha@quicinc.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
Wei Fang <wei.fang@nxp.com>,
andrew@lunn.ch, hkallweit1@gmail.com, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
xiaolei.wang@windriver.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH v2 net] net: phy: clear phydev->devlink when the link is deleted
Date: Tue, 3 Jun 2025 22:13:01 +0100 [thread overview]
Message-ID: <aD9lXa1JVRyJKuP_@shell.armlinux.org.uk> (raw)
In-Reply-To: <d696a426-40bb-4c1a-b42d-990fb690de5e@quicinc.com>
On Tue, Jun 03, 2025 at 01:39:47PM -0700, Abhishek Chauhan (ABC) wrote:
>
>
> On 5/23/2025 8:19 AM, Florian Fainelli wrote:
> >
> >
> > On 5/23/2025 1:37 AM, Wei Fang wrote:
> >> There is a potential crash issue when disabling and re-enabling the
> >> network port. When disabling the network port, phy_detach() calls
> >> device_link_del() to remove the device link, but it does not clear
> >> phydev->devlink, so phydev->devlink is not a NULL pointer. Then the
> >> network port is re-enabled, but if phy_attach_direct() fails before
> >> calling device_link_add(), the code jumps to the "error" label and
> >> calls phy_detach(). Since phydev->devlink retains the old value from
> >> the previous attach/detach cycle, device_link_del() uses the old value,
> >> which accesses a NULL pointer and causes a crash. The simplified crash
> >> log is as follows.
> >>
> >> [ 24.702421] Call trace:
> >> [ 24.704856] device_link_put_kref+0x20/0x120
> >> [ 24.709124] device_link_del+0x30/0x48
> >> [ 24.712864] phy_detach+0x24/0x168
> >> [ 24.716261] phy_attach_direct+0x168/0x3a4
> >> [ 24.720352] phylink_fwnode_phy_connect+0xc8/0x14c
> >> [ 24.725140] phylink_of_phy_connect+0x1c/0x34
> >>
> >> Therefore, phydev->devlink needs to be cleared when the device link is
> >> deleted.
> >>
> >> Fixes: bc66fa87d4fd ("net: phy: Add link between phy dev and mac dev")
> >> Signed-off-by: Wei Fang <wei.fang@nxp.com>
> >
> @Wei
> What happens in case of shared mdio ?
>
> 1. Device 23040000 has the mdio node of both the ethernet phy and device 23000000 references the phy-handle present in the Device 23040000
> 2. When rmmod of the driver happens
> 3. the parent devlink is already deleted.
> 4. This cause the child mdio to access an entry causing a corruption.
> 5. Thought this fix would help but i see that its not helping the case.
>
> Wondering if this is a legacy issue with shared mdio framework.
The device link does nothing for this as it has DL_FLAG_STATELESS set,
which only affects suspend/resume/shutdown ordering, and with
DL_FLAG_PM_RUNTIME also set, runtime PM.
The device probe/removal ordering is unaffected. Maybe that's a
problem, but it needs careful consideration to change.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2025-06-03 21:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-23 8:37 [PATCH v2 net] net: phy: clear phydev->devlink when the link is deleted Wei Fang
2025-05-23 13:18 ` Andrew Lunn
2025-05-23 15:19 ` Florian Fainelli
2025-06-03 20:39 ` Abhishek Chauhan (ABC)
2025-06-03 21:13 ` Russell King (Oracle) [this message]
2025-06-04 6:00 ` Wei Fang
2025-06-04 6:09 ` Abhishek Chauhan (ABC)
2025-06-05 4:59 ` Sarosh Hasan
2025-06-04 8:07 ` Russell King (Oracle)
2025-06-04 12:08 ` Wei Fang
2025-06-06 0:52 ` Abhishek Chauhan (ABC)
2025-06-06 5:26 ` Wei Fang
2025-05-28 0:50 ` 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=aD9lXa1JVRyJKuP_@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=quic_abchauha@quicinc.com \
--cc=wei.fang@nxp.com \
--cc=xiaolei.wang@windriver.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.