aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2005-10-10 09:50:51 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-18 18:03:47 -0400
commit2891439e7378e35534d7eb32f77671dc4d61db4c (patch)
treed2cba6b9391f5488f2b6d8d6418b43e9ae3c2969 /drivers/net
parentbc053d45cb0ca5daeaa69ae9ac43cdea42693f60 (diff)
[PATCH] sgiseeq: Fix resource handling.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org> drivers/net/sgiseeq.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/sgiseeq.c9
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
736err_out_free_page: 738err_out_free_page:
737 free_page((unsigned long) sp); 739 free_page((unsigned long) sp->srings);
738err_out_free_dev: 740err_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}