| From 3ccb972cdbcd05d2c33034253285da10d68afb73 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 6 Jul 2020 10:39:34 +0200 |
| Subject: smsc95xx: check return value of smsc95xx_reset |
| |
| From: Andre Edich <andre.edich@microchip.com> |
| |
| [ Upstream commit 7c8b1e855f94f88a0c569be6309fc8d5c8844cd1 ] |
| |
| The return value of the function smsc95xx_reset() must be checked |
| to avoid returning false success from the function smsc95xx_bind(). |
| |
| Fixes: 2f7ca802bdae2 ("net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driver") |
| Signed-off-by: Andre Edich <andre.edich@microchip.com> |
| Signed-off-by: Parthiban Veerasooran <Parthiban.Veerasooran@microchip.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/usb/smsc95xx.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c |
| index 3cf4dc3433f91..eb404bb74e18e 100644 |
| --- a/drivers/net/usb/smsc95xx.c |
| +++ b/drivers/net/usb/smsc95xx.c |
| @@ -1287,6 +1287,8 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) |
| |
| /* Init all registers */ |
| ret = smsc95xx_reset(dev); |
| + if (ret) |
| + goto free_pdata; |
| |
| /* detect device revision as different features may be available */ |
| ret = smsc95xx_read_reg(dev, ID_REV, &val); |
| @@ -1317,6 +1319,10 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) |
| schedule_delayed_work(&pdata->carrier_check, CARRIER_CHECK_DELAY); |
| |
| return 0; |
| + |
| +free_pdata: |
| + kfree(pdata); |
| + return ret; |
| } |
| |
| static void smsc95xx_unbind(struct usbnet *dev, struct usb_interface *intf) |
| -- |
| 2.25.1 |
| |