From 8107bb0f1014a9af87a889feb20644f0845a08bd Mon Sep 17 00:00:00 2001 From: "dilinger@debian.org" Date: Fri, 18 Mar 2005 21:32:44 -0800 Subject: [PATCH] [PATCH] Possible AMD8111e free irq issue It seems to me that if in the amd8111e_open() fuction dev->irq isn't zero and the irq request succeeds it might not get released anymore. Specifically, on failure of the amd8111e_restart() call the function returns -ENOMEM without releasing the irq. The amd8111e_restart() function can fail because of various pci_alloc_consistent() and dev_alloc_skb() calls in amd8111e_init_ring() which is being called by amd8111e_restart. 1374 if(dev->irq ==0 || request_irq(dev->irq, amd8111e_interrupt, SA_SHIRQ, 1375 dev->name, dev)) 1376 return -EAGAIN; Signed-off-by: Jeff Garzik Signed-off-by: Chris Wright Signed-off-by: Greg Kroah-Hartman --- drivers/net/amd8111e.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c index f1d81901ecf1..4e6f7553ffec 100755 --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c @@ -1381,6 +1381,8 @@ static int amd8111e_open(struct net_device * dev ) if(amd8111e_restart(dev)){ spin_unlock_irq(&lp->lock); + if (dev->irq) + free_irq(dev->irq, dev); return -ENOMEM; } /* Start ipg timer */