]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
xtsonic: free irq if sonic_open() fails
authorKulikov Vasiliy <segooon@gmail.com>
Sat, 10 Jul 2010 01:01:44 +0000 (01:01 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Jul 2010 03:21:45 +0000 (20:21 -0700)
xtsonic_open() doesn't check sonic_open() return code. If it is error
we must free requested IRQ.

Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xtsonic.c

index fdba9cb3a599e65b77522008930f98226722f4c4..9f12026d98e7f9a94a8ac5f42e662de9ce5010f9 100644 (file)
@@ -93,12 +93,20 @@ static unsigned short known_revisions[] =
 
 static int xtsonic_open(struct net_device *dev)
 {
-       if (request_irq(dev->irq,sonic_interrupt,IRQF_DISABLED,"sonic",dev)) {
+       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 -EAGAIN;
        }
-       return sonic_open(dev);
+
+       retval = sonic_open(dev);
+       if (retval)
+               free_irq(dev->irq, dev);
+       return retval;
 }
 
 static int xtsonic_close(struct net_device *dev)