]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ethtool: pse-pd: fix missing ethnl_ops_complete()
authorJakub Kicinski <kuba@kernel.org>
Tue, 26 May 2026 15:35:27 +0000 (08:35 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 28 May 2026 00:42:08 +0000 (17:42 -0700)
pse_prepare_data() is missing ethnl_ops_complete() if
ethnl_req_get_phydev() returned an error. Move getting
phydev up so that we don't have to worry about this
(similar order to linkstate_prepare_data()).

Note that phydev may still be NULL (this is checked in
pse_get_pse_attributes()), the goal isn't really to avoid
the _begin() / _complete() calls, only to simplify the error
handling.

While at it propagate the original error. Why this code
overrides the error with -ENODEV but !phydev generates
-EOPNOTSUPP is unclear to me...

Fixes: 31748765bed3 ("net: ethtool: pse-pd: Target the command to the requested PHY")
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/20260526153533.2779187-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/pse-pd.c

index 2eb9bdc2dcb904f4e7953f7ea3b8e144215796b6..757c9e0cc856f326dcac059fca5bd7615841bcbf 100644 (file)
@@ -62,14 +62,14 @@ static int pse_prepare_data(const struct ethnl_req_info *req_base,
        struct phy_device *phydev;
        int ret;
 
-       ret = ethnl_ops_begin(dev);
-       if (ret < 0)
-               return ret;
-
        phydev = ethnl_req_get_phydev(req_base, tb, ETHTOOL_A_PSE_HEADER,
                                      info->extack);
        if (IS_ERR(phydev))
-               return -ENODEV;
+               return PTR_ERR(phydev);
+
+       ret = ethnl_ops_begin(dev);
+       if (ret < 0)
+               return ret;
 
        ret = pse_get_pse_attributes(phydev, info->extack, data);