e1000: IRQ resource cleanup
Subsystems (2)
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
Signed-off-by Vasily Averin <[email protected]>
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);