mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
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 <o.rempel@pengutronix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20241204084142.1152696-10-o.rempel@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
65520a70cb
commit
0da202e6a5
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user