Skip to contentSkip to conversation

e1000: IRQ resource cleanup

PATCH New Vasily Averin 1 participant 1 message Aug 19, 2006

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

PATCH 1/1 e1000: IRQ resource cleanup

patch updated: It seems for me e1000_power_down_phy() should be added to rollbacke1000_power_up_phy().

I know, currently e1000_up() always return success. But this behaviour may be changed in future...

Andrew,
could you please use attached patch instead previous version?
---
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

Thank you,
Vasily Averin

SWsoft Virtuozzo/OpenVZ Linux kernel team

drivers/net/e1000/e1000_main.c renamed from drivers/net/e1000/e1000_main.c.oirq1 +4 -1
@@ -1208,7 +1208,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);
 
@@ -1229,6 +1229,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);