From: Kulikov Vasiliy Date: Sat, 10 Jul 2010 01:00:35 +0000 (+0000) Subject: jazzsonic: free irq if sonic_open() fails X-Git-Tag: v2.6.36-rc1~571^2~257 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=62cd69a10683bd17a2454213b8c36a4399c533ab;p=profile%2Fcommon%2Fkernel-common.git 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. Signed-off-by: Kulikov Vasiliy Signed-off-by: David S. Miller --- diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c index 3e6aaf9..949c1f9 100644 --- a/drivers/net/jazzsonic.c +++ b/drivers/net/jazzsonic.c @@ -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)