Re: [PATCH 2/2][next] net: usb: asix: ax88772: net: Fix less than zero comparison of a u16
From: Oleksij Rempel <o.rempel@pengutronix.de>
Date: 2021-06-09 11:52:27
Also in:
kernel-janitors, lkml, netdev
On Wed, Jun 09, 2021 at 10:51:09AM +0100, Colin Ian King wrote:
quoted hunk ↗ jump to hunk
On 08/06/2021 19:11, Oleksij Rempel wrote:quoted
On Tue, Jun 08, 2021 at 04:22:49PM +0100, Colin King wrote:quoted
From: Colin Ian King <redacted> The comparison of the u16 priv->phy_addr < 0 is always false because phy_addr is unsigned. Fix this by assigning the return from the call to function asix_read_phy_addr to int ret and using this for the less than zero error check comparison. Addresses-Coverity: ("Unsigned compared against 0") Fixes: 7e88b11a862a ("net: usb: asix: refactor asix_read_phy_addr() and handle errors on return")Here is wrong Fixes tag. This assignment was bogus before this patch.I'm not sure that's correct, that commit has the following change in it:diff --git a/drivers/net/usb/ax88172a.c b/drivers/net/usb/ax88172a.c index b404c9462dce..c8ca5187eece 100644 --- a/drivers/net/usb/ax88172a.c +++ b/drivers/net/usb/ax88172a.c@@ -220,6 +220,11 @@ static int ax88172a_bind(struct usbnet *dev, structusb_interface *intf) } priv->phy_addr = asix_read_phy_addr(dev, priv->use_embdphy); + if (priv->phy_addr < 0) { + ret = priv->phy_addr; + goto free; + } +
Even before my patch asix_read_phy_addr() was returning different error values. My patch just add check for the return value.
quoted
quoted
Signed-off-by: Colin Ian King <redacted> --- drivers/net/usb/ax88172a.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/drivers/net/usb/ax88172a.c b/drivers/net/usb/ax88172a.c index 2e2081346740..e24773bb9398 100644 --- a/drivers/net/usb/ax88172a.c +++ b/drivers/net/usb/ax88172a.c@@ -205,7 +205,8 @@ static int ax88172a_bind(struct usbnet *dev, struct usb_interface *intf) goto free; } - priv->phy_addr = asix_read_phy_addr(dev, priv->use_embdphy); + ret = asix_read_phy_addr(dev, priv->use_embdphy); + priv->phy_addr = ret;Ah.. it is same bug in different color :) You probably wonted to do: if (ret < 0) goto free; priv->phy_addr = ret;Doh, brain failure of mine. I'll send a V2 later today.quoted
quoted
if (priv->phy_addr < 0) { ret = priv->phy_addr; goto free; -- 2.31.1
-- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |