net: phy: improve phy_read_poll_timeout
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 6 Mar 2023 21:51:35 +0000 (22:51 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 8 Mar 2023 02:19:09 +0000 (18:19 -0800)
cond sometimes is (val & MASK) what may result in a false positive
if val is a negative errno. We shouldn't evaluate cond if val < 0.
This has no functional impact here, but it's not nice.
Therefore switch order of the checks.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/6d8274ac-4344-23b4-d9a3-cad4c39517d4@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/phy.h

index 36bf0bb..fefd509 100644 (file)
@@ -1130,16 +1130,15 @@ static inline int phy_read(struct phy_device *phydev, u32 regnum)
 #define phy_read_poll_timeout(phydev, regnum, val, cond, sleep_us, \
                                timeout_us, sleep_before_read) \
 ({ \
-       int __ret = read_poll_timeout(phy_read, val, (cond) || val < 0, \
+       int __ret = read_poll_timeout(phy_read, val, val < 0 || (cond), \
                sleep_us, timeout_us, sleep_before_read, phydev, regnum); \
-       if (val <  0) \
+       if (val < 0) \
                __ret = val; \
        if (__ret) \
                phydev_err(phydev, "%s failed: %d\n", __func__, __ret); \
        __ret; \
 })
 
-
 /**
  * __phy_read - convenience function for reading a given PHY register
  * @phydev: the phy_device struct