]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: usb: asix_devices: Check return value of usbnet_get_endpoints
authorMiaoqian Lin <linmq006@gmail.com>
Sun, 26 Oct 2025 16:43:16 +0000 (00:43 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 30 Oct 2025 00:51:48 +0000 (17:51 -0700)
The code did not check the return value of usbnet_get_endpoints.
Add checks and return the error if it fails to transfer the error.

Found via static anlaysis and this is similar to
commit 07161b2416f7 ("sr9800: Add check for usbnet_get_endpoints").

Fixes: 933a27d39e0e ("USB: asix - Add AX88178 support and many other changes")
Fixes: 2e55cc7210fe ("[PATCH] USB: usbnet (3/9) module for ASIX Ethernet adapters")
Cc: stable@vger.kernel.org
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Link: https://patch.msgid.link/20251026164318.57624-1-linmq006@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/asix_devices.c

index 85bd5d845409b97f9cea84c9cf983b22de972843..232bbd79a4dedb4cdf7704af30fd27835a7d3510 100644 (file)
@@ -230,7 +230,9 @@ static int ax88172_bind(struct usbnet *dev, struct usb_interface *intf)
        int i;
        unsigned long gpio_bits = dev->driver_info->data;
 
-       usbnet_get_endpoints(dev,intf);
+       ret = usbnet_get_endpoints(dev, intf);
+       if (ret)
+               goto out;
 
        /* Toggle the GPIOs in a manufacturer/model specific way */
        for (i = 2; i >= 0; i--) {
@@ -848,7 +850,9 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
 
        dev->driver_priv = priv;
 
-       usbnet_get_endpoints(dev, intf);
+       ret = usbnet_get_endpoints(dev, intf);
+       if (ret)
+               return ret;
 
        /* Maybe the boot loader passed the MAC address via device tree */
        if (!eth_platform_get_mac_address(&dev->udev->dev, buf)) {
@@ -1281,7 +1285,9 @@ static int ax88178_bind(struct usbnet *dev, struct usb_interface *intf)
        int ret;
        u8 buf[ETH_ALEN] = {0};
 
-       usbnet_get_endpoints(dev,intf);
+       ret = usbnet_get_endpoints(dev, intf);
+       if (ret)
+               return ret;
 
        /* Get the MAC address */
        ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf, 0);