Skip to contentSkip to conversation

jazzsonic: free irq if sonic_open() fails

PATCH Applied Kulikov Vasiliy 1 participant 1 message Jul 10, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 jazzsonic: free irq if sonic_open() fails

jazzsonic_open() doesn't check sonic_open() return code. If it is error we must free requested IRQ.

---
 drivers/net/jazzsonic.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)
drivers/net/jazzsonic.c +13 -4
index 3e6aaf9..949c1f9 100644
@@ -82,11 +82,20 @@ static unsigned short known_revisions[]  
 static int jazzsonic_open(struct net_device* dev)
 {
-	if (request_irq(dev->irq, sonic_interrupt, IRQF_DISABLED, "sonic", dev)) {
-		printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, dev->irq);
-		return -EAGAIN;
+	int retval;
+
+	retval = request_irq(dev->irq, sonic_interrupt, IRQF_DISABLED,
+				"sonic", dev);
+	if (retval) {
+		printk(KERN_ERR "%s: unable to get IRQ %d.\n",
+				dev->name, dev->irq);
+		return retval;
 	}
-	return sonic_open(dev);
+
+	retval = sonic_open(dev);
+	if (retval)
+		free_irq(dev->irq, dev);
+	return retval;
 }
 
 static int jazzsonic_close(struct net_device* dev)
Signature · 1 line
1.7.0.4