diff options
| -rw-r--r-- | drivers/net/sgiseeq.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/sgiseeq.c b/drivers/net/sgiseeq.c index 9bc3b1c0dd6a..a9d2e4fd0aec 100644 --- a/drivers/net/sgiseeq.c +++ b/drivers/net/sgiseeq.c | |||
| @@ -493,11 +493,13 @@ static int sgiseeq_close(struct net_device *dev) | |||
| 493 | { | 493 | { |
| 494 | struct sgiseeq_private *sp = netdev_priv(dev); | 494 | struct sgiseeq_private *sp = netdev_priv(dev); |
| 495 | struct sgiseeq_regs *sregs = sp->sregs; | 495 | struct sgiseeq_regs *sregs = sp->sregs; |
| 496 | unsigned int irq = dev->irq; | ||
| 496 | 497 | ||
| 497 | netif_stop_queue(dev); | 498 | netif_stop_queue(dev); |
| 498 | 499 | ||
| 499 | /* Shutdown the Seeq. */ | 500 | /* Shutdown the Seeq. */ |
| 500 | reset_hpc3_and_seeq(sp->hregs, sregs); | 501 | reset_hpc3_and_seeq(sp->hregs, sregs); |
| 502 | free_irq(irq, dev); | ||
| 501 | 503 | ||
| 502 | return 0; | 504 | return 0; |
| 503 | } | 505 | } |
| @@ -734,7 +736,7 @@ static int sgiseeq_init(struct hpc3_regs* regs, int irq) | |||
| 734 | return 0; | 736 | return 0; |
| 735 | 737 | ||
| 736 | err_out_free_page: | 738 | err_out_free_page: |
| 737 | free_page((unsigned long) sp); | 739 | free_page((unsigned long) sp->srings); |
| 738 | err_out_free_dev: | 740 | err_out_free_dev: |
| 739 | kfree(dev); | 741 | kfree(dev); |
| 740 | 742 | ||
| @@ -754,15 +756,12 @@ static void __exit sgiseeq_exit(void) | |||
| 754 | { | 756 | { |
| 755 | struct net_device *next, *dev; | 757 | struct net_device *next, *dev; |
| 756 | struct sgiseeq_private *sp; | 758 | struct sgiseeq_private *sp; |
| 757 | int irq; | ||
| 758 | 759 | ||
| 759 | for (dev = root_sgiseeq_dev; dev; dev = next) { | 760 | for (dev = root_sgiseeq_dev; dev; dev = next) { |
| 760 | sp = (struct sgiseeq_private *) netdev_priv(dev); | 761 | sp = (struct sgiseeq_private *) netdev_priv(dev); |
| 761 | next = sp->next_module; | 762 | next = sp->next_module; |
| 762 | irq = dev->irq; | ||
| 763 | unregister_netdev(dev); | 763 | unregister_netdev(dev); |
| 764 | free_irq(irq, dev); | 764 | free_page((unsigned long) sp->srings); |
| 765 | free_page((unsigned long) sp); | ||
| 766 | free_netdev(dev); | 765 | free_netdev(dev); |
| 767 | } | 766 | } |
| 768 | } | 767 | } |
