From: Oleksij Rempel Date: Wed, 4 Dec 2024 08:41:41 +0000 (+0100) Subject: net: usb: lan78xx: Add error handling to lan78xx_irq_bus_sync_unlock X-Git-Tag: v6.14-rc1~162^2~269^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0da202e6a56f6ec137fde151c1a1a9d39a4135c0;p=thirdparty%2Flinux.git net: usb: lan78xx: Add error handling to lan78xx_irq_bus_sync_unlock Update `lan78xx_irq_bus_sync_unlock` to handle errors in register read/write operations. If an error occurs, log it and exit the function appropriately. This ensures proper handling of failures during IRQ synchronization. Signed-off-by: Oleksij Rempel Reviewed-by: Andrew Lunn Link: https://patch.msgid.link/20241204084142.1152696-10-o.rempel@pengutronix.de Signed-off-by: Jakub Kicinski --- diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 2d16c1fc850e9..2ae9565b5044f 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2382,13 +2382,22 @@ static void lan78xx_irq_bus_sync_unlock(struct irq_data *irqd) struct lan78xx_net *dev = container_of(data, struct lan78xx_net, domain_data); u32 buf; + int ret; /* call register access here because irq_bus_lock & irq_bus_sync_unlock * are only two callbacks executed in non-atomic contex. */ - lan78xx_read_reg(dev, INT_EP_CTL, &buf); + ret = lan78xx_read_reg(dev, INT_EP_CTL, &buf); + if (ret < 0) + goto irq_bus_sync_unlock; + if (buf != data->irqenable) - lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable); + ret = lan78xx_write_reg(dev, INT_EP_CTL, data->irqenable); + +irq_bus_sync_unlock: + if (ret < 0) + netdev_err(dev->net, "Failed to sync IRQ enable register: %pe\n", + ERR_PTR(ret)); mutex_unlock(&data->irq_lock); }