From: Vasily Averin irq leak was found in 2.6.18-rc4 and e1000 7.2.7 from sourceforge: if e1000_up fails in e1000_open() we do not free allocated irq Signed-off-by: Vasily Averin Cc: Jeb Cramer Cc: John Ronciak Cc: Jesse Brandeburg Cc: Jeff Kirsher Cc: Auke Kok Cc: Jeff Garzik Signed-off-by: Andrew Morton --- drivers/net/e1000/e1000_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff -puN drivers/net/e1000/e1000_main.c~e1000-irq-resources-cleanup drivers/net/e1000/e1000_main.c --- a/drivers/net/e1000/e1000_main.c~e1000-irq-resources-cleanup +++ a/drivers/net/e1000/e1000_main.c @@ -1207,7 +1207,7 @@ e1000_open(struct net_device *netdev) err = e1000_request_irq(adapter); if (err) - goto err_up; + goto err_req_irq; e1000_power_up_phy(adapter); @@ -1228,6 +1228,9 @@ e1000_open(struct net_device *netdev) return E1000_SUCCESS; err_up: + e1000_power_down_phy(adapter); + e1000_free_irq(adapter); +err_req_irq: e1000_free_all_rx_resources(adapter); err_setup_rx: e1000_free_all_tx_resources(adapter); _