net/ethtool/cabletest.c | 8 ++++---- net/ethtool/linkstate.c | 2 +- net/ethtool/netlink.c | 21 +++++++++++++++++---- net/ethtool/netlink.h | 5 +++-- net/ethtool/phy.c | 2 +- net/ethtool/plca.c | 6 +++--- net/ethtool/pse-pd.c | 4 ++-- net/ethtool/stats.c | 2 +- net/ethtool/strset.c | 2 +- 9 files changed, 33 insertions(+), 19 deletions(-)
It has been found (thanks to Parthiban) that the PLCA ethtool commands
were failing since 6.12, due to the phy_link_topology work. This was
traced back to the ethnl notifications mechanism, in which calls to
ethnl_req_get_phydev() crashed in the notification path following a
->set request.
The typical callsite for ethnl_req_get_phydev() looks like :
phydev = ethnl_req_get_phydev(req_base, tb[ETHTOOL_A_XXX_HEADER],
info->extack);
as 'tb' is NULL in the notification path for the ->prepare_data ethnl
ops, this causes crashes. The solution for that is to change the
prototype of ethnl_req_get_phydev() to perform checks inside the helper
(patch 1).
While investigating that, I realised that the notification path for PHYs
is not correct anyways. As we don't have a netlink request to parse, we
can't know for sure which PHY the notification event targets in the case
of a notification following a ->set request.
Patch 2 introduces a context structure that is used between ->set
requests and the followup notification, to keep track of the PHY that
the original request targeted for the notification.
Thanks Parthiban for the report (not on netdev@ though).
Maxime
Maxime Chevallier (2):
net: ethtool: netlink: Allow NULL nlattrs when getting a phy_device
net: ethtool: netlink: Pass a context for default ethnl notifications
net/ethtool/cabletest.c | 8 ++++----
net/ethtool/linkstate.c | 2 +-
net/ethtool/netlink.c | 21 +++++++++++++++++----
net/ethtool/netlink.h | 5 +++--
net/ethtool/phy.c | 2 +-
net/ethtool/plca.c | 6 +++---
net/ethtool/pse-pd.c | 4 ++--
net/ethtool/stats.c | 2 +-
net/ethtool/strset.c | 2 +-
9 files changed, 33 insertions(+), 19 deletions(-)
--
2.48.1
Hi Maxime, I did a quick test with your patches and it seems working fine without kernel crash. Best regards, Parthiban V On 27/02/25 11:54 pm, Maxime Chevallier wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > It has been found (thanks to Parthiban) that the PLCA ethtool commands > were failing since 6.12, due to the phy_link_topology work. This was > traced back to the ethnl notifications mechanism, in which calls to > ethnl_req_get_phydev() crashed in the notification path following a > ->set request. > > The typical callsite for ethnl_req_get_phydev() looks like : > > phydev = ethnl_req_get_phydev(req_base, tb[ETHTOOL_A_XXX_HEADER], > info->extack); > > as 'tb' is NULL in the notification path for the ->prepare_data ethnl > ops, this causes crashes. The solution for that is to change the > prototype of ethnl_req_get_phydev() to perform checks inside the helper > (patch 1). > > While investigating that, I realised that the notification path for PHYs > is not correct anyways. As we don't have a netlink request to parse, we > can't know for sure which PHY the notification event targets in the case > of a notification following a ->set request. > > Patch 2 introduces a context structure that is used between ->set > requests and the followup notification, to keep track of the PHY that > the original request targeted for the notification. > > Thanks Parthiban for the report (not on netdev@ though). > > Maxime > > Maxime Chevallier (2): > net: ethtool: netlink: Allow NULL nlattrs when getting a phy_device > net: ethtool: netlink: Pass a context for default ethnl notifications > > net/ethtool/cabletest.c | 8 ++++---- > net/ethtool/linkstate.c | 2 +- > net/ethtool/netlink.c | 21 +++++++++++++++++---- > net/ethtool/netlink.h | 5 +++-- > net/ethtool/phy.c | 2 +- > net/ethtool/plca.c | 6 +++--- > net/ethtool/pse-pd.c | 4 ++-- > net/ethtool/stats.c | 2 +- > net/ethtool/strset.c | 2 +- > 9 files changed, 33 insertions(+), 19 deletions(-) > > -- > 2.48.1 >
On Fri, 28 Feb 2025 06:19:18 +0000 <Parthiban.Veerasooran@microchip.com> wrote: > Hi Maxime, > > I did a quick test with your patches and it seems working fine without > kernel crash. > > Best regards, > Parthiban V Thanks for testing, good to hear that this solves the issue :) Maxime
On Thu, 27 Feb 2025 19:24:50 +0100 Maxime Chevallier <maxime.chevallier@bootlin.com> wrote: Oops subject got truncated, should be : net: ethtool: netlink: Fix notifications for PHY commands Maxime :(
© 2016 - 2025 Red Hat, Inc.