r1010 - trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches

Joshua Kwan joshk@haydn.debian.org
Wed, 11 Aug 2004 09:43:56 -0600


Author: joshk
Date: 2004-08-11 09:43:48 -0600 (Wed, 11 Aug 2004)
New Revision: 1010

Added:
   trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff
   trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff
   trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff
Modified:
   trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1
Log:
split out some more mini-patches


Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff	2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff	2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,144 @@
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c	2002-08-03 10:39:44.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c	2003-09-27 13:32:55.000000000 +1000
+@@ -53,6 +53,7 @@
+ 	int ioaddr;
+ 	unsigned long airqmask;
+ 	struct arcnet_local *lp = dev->priv;
++	int err;
+ 
+ #ifndef MODULE
+ 	arcnet_init();
+@@ -66,17 +67,20 @@
+ 		       "must specify the base address!\n");
+ 		return -ENODEV;
+ 	}
+-	if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
++	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+ 		BUGMSG(D_NORMAL, "IO region %xh-%xh already allocated.\n",
+ 		       ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
+ 		return -ENXIO;
+ 	}
+ 	if (ASTATUS() == 0xFF) {
+ 		BUGMSG(D_NORMAL, "IO address %x empty\n", ioaddr);
+-		return -ENODEV;
++		err = -ENODEV;
++		goto out;
++	}
++	if (com20020_check(dev)) {
++		err = -ENODEV;
++		goto out;
+ 	}
+-	if (com20020_check(dev))
+-		return -ENODEV;
+ 
+ 	if (!dev->irq) {
+ 		/* if we do this, we're sure to get an IRQ since the
+@@ -100,13 +104,21 @@
+ 			dev->irq = probe_irq_off(airqmask);
+ 			if (dev->irq <= 0) {
+ 				BUGMSG(D_NORMAL, "Autoprobe IRQ failed.\n");
+-				return -ENODEV;
++				err = -ENODEV;
++				goto out;
+ 			}
+ 		}
+ 	}
+ 
+ 	lp->card_name = "ISA COM20020";
+-	return com20020_found(dev, 0);
++	if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
++		goto out;
++
++	return 0;
++
++out:
++	release_region(ioaddr, ARCNET_TOTAL_SIZE);
++	return err;
+ }
+ 
+ 
+@@ -182,6 +194,7 @@
+ void cleanup_module(void)
+ {
+ 	com20020_remove(my_dev);
++	release_region(my_dev->base_addr, ARCNET_TOTAL_SIZE);
+ }
+ 
+ #else
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c	2003-06-14 00:51:34.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c	2003-09-27 13:32:55.000000000 +1000
+@@ -113,7 +113,7 @@
+ 	lp->timeout = timeout;
+ 	lp->hw.open_close_ll = com20020pci_open_close;
+ 
+-	if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
++	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+ 		BUGMSG(D_INIT, "IO region %xh-%xh already allocated.\n",
+ 		       ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
+ 		err = -EBUSY;
+@@ -123,18 +123,20 @@
+ 		BUGMSG(D_NORMAL, "IO address %Xh was reported by PCI BIOS, "
+ 		       "but seems empty!\n", ioaddr);
+ 		err = -EIO;
+-		goto out_priv;
++		goto out_port;
+ 	}
+ 	if (com20020_check(dev)) {
+ 		err = -EIO;
+-		goto out_priv;
++		goto out_port;
+ 	}
+ 
+ 	if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
+-	        goto out_priv;
++	        goto out_port;
+ 
+ 	return 0;
+ 
++out_port:
++	release_region(ioaddr, ARCNET_TOTAL_SIZE);
+ out_priv:
+ 	kfree(dev->priv);
+ out_dev:
+@@ -144,7 +146,9 @@
+ 
+ static void __devexit com20020pci_remove(struct pci_dev *pdev)
+ {
+-	com20020_remove(pci_get_drvdata(pdev));
++	struct net_device *dev = pci_get_drvdata(pdev);
++	com20020_remove(dev);
++	release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
+ }
+ 
+ static struct pci_device_id com20020pci_id_table[] __devinitdata = {
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020.c	2003-06-14 00:51:34.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c	2003-09-27 13:32:55.000000000 +1000
+@@ -204,12 +204,6 @@
+ 		BUGMSG(D_NORMAL, "Can't get IRQ %d!\n", dev->irq);
+ 		return -ENODEV;
+ 	}
+-	/* reserve the I/O region */
+-	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+-		free_irq(dev->irq, dev);
+-		return -EBUSY;
+-	}
+-	dev->base_addr = ioaddr;
+ 
+ 	BUGMSG(D_NORMAL, "%s: station %02Xh found at %03lXh, IRQ %d.\n",
+ 	       lp->card_name, dev->dev_addr[0], dev->base_addr, dev->irq);
+@@ -226,7 +220,6 @@
+ 
+ 	if (!dev->init && register_netdev(dev)) {
+ 		free_irq(dev->irq, dev);
+-		release_region(ioaddr, ARCNET_TOTAL_SIZE);
+ 		return -EIO;
+ 	}
+ 	return 0;
+@@ -348,7 +341,6 @@
+ {
+ 	unregister_netdev(dev);
+ 	free_irq(dev->irq, dev);
+-	release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
+ 	kfree(dev->priv);
+ 	kfree(dev);
+ }

Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff	2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff	2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,69 @@
+diff -urN kernel-source-2.4.26/drivers/net/8139too.c kernel-source-2.4.26-1/drivers/net/8139too.c
+--- kernel-source-2.4.26/drivers/net/8139too.c	2004-04-14 23:05:30.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/8139too.c	2004-04-17 14:23:48.000000000 +1000
+@@ -111,6 +111,7 @@
+ #include <linux/completion.h>
+ #include <linux/crc32.h>
+ #include <asm/io.h>
++#include <asm/semaphore.h>
+ #include <asm/uaccess.h>
+ 
+ #define RTL8139_DRIVER_NAME   DRV_NAME " Fast Ethernet driver " DRV_VERSION
+@@ -591,6 +592,7 @@
+ 	struct rtl_extra_stats xstats;
+ 	int time_to_die;
+ 	struct mii_if_info mii;
++	struct semaphore mdio_sem;
+ 	unsigned int regs_len;
+ };
+ 
+@@ -1003,6 +1005,7 @@
+ 	tp->mii.mdio_write = mdio_write;
+ 	tp->mii.phy_id_mask = 0x3f;
+ 	tp->mii.reg_num_mask = 0x1f;
++	init_MUTEX (&tp->mdio_sem);
+ 
+ 	/* dev is fully set up and ready to use now */
+ 	DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
+@@ -1618,9 +1621,10 @@
+ 		if (tp->time_to_die)
+ 			break;
+ 
+-		rtnl_lock ();
++		if (down_interruptible (&tp->mdio_sem))
++			break;
+ 		rtl8139_thread_iter (dev, tp, tp->mmio_addr);
+-		rtnl_unlock ();
++		up (&tp->mdio_sem);
+ 	}
+ 
+ 	complete_and_exit (&tp->thr_exited, 0);
+@@ -2144,10 +2148,10 @@
+ 		wmb();
+ 		ret = kill_proc (tp->thr_pid, SIGTERM, 1);
+ 		if (ret) {
+-			printk (KERN_ERR "%s: unable to signal thread\n", dev->name);
+-			return ret;
++			printk (KERN_ERR "%s: unable to signal thread: %d\n", dev->name, ret);
++		} else {
++			wait_for_completion (&tp->thr_exited);
+ 		}
+-		wait_for_completion (&tp->thr_exited);
+ 	}
+ 	
+ 	if (netif_msg_ifdown(tp))
+@@ -2388,10 +2392,14 @@
+ 	if (!netif_running(dev))
+ 		return -EINVAL;
+ 
++	if (down_interruptible (&np->mdio_sem))
++		return -ERESTARTSYS;
++
+ 	spin_lock_irq(&np->lock);
+ 	rc = generic_mii_ioctl(&np->mii, data, cmd, NULL);
+ 	spin_unlock_irq(&np->lock);
+ 
++	up (&np->mdio_sem);
+ 	return rc;
+ }
+ 

Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff	2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff	2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,23 @@
+diff -urN kernel-source-2.4.26/arch/i386/kernel/mpparse.c kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c
+--- kernel-source-2.4.26/arch/i386/kernel/mpparse.c	2004-04-14 23:05:25.000000000 +1000
++++ kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c	2004-04-17 14:23:36.000000000 +1000
+@@ -429,15 +429,12 @@
+ 	unsigned char *bus_data;
+ 
+ 	if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {
+-		panic("SMP mptable: bad signature [%c%c%c%c]!\n",
+-			mpc->mpc_signature[0],
+-			mpc->mpc_signature[1],
+-			mpc->mpc_signature[2],
+-			mpc->mpc_signature[3]);
++		printk(KERN_ERR "SMP mptable: bad signature [0x%x]!\n",
++			*(u32 *)mpc->mpc_signature);
+ 		return 0;
+ 	}
+ 	if (mpf_checksum((unsigned char *)mpc,mpc->mpc_length)) {
+-		panic("SMP mptable: checksum error!\n");
++		printk(KERN_ERR "SMP mptable: checksum error!\n");
+ 		return 0;
+ 	}
+ 	if (mpc->mpc_spec!=0x01 && mpc->mpc_spec!=0x04) {
+

Modified: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1	2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1	2004-08-11 15:43:48 UTC (rev 1010)
@@ -784,28 +784,6 @@
  CONFIG_INET=y
  CONFIG_IP_MULTICAST=y
  # CONFIG_IP_ADVANCED_ROUTER is not set
-diff -urN kernel-source-2.4.26/arch/i386/kernel/mpparse.c kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c
---- kernel-source-2.4.26/arch/i386/kernel/mpparse.c	2004-04-14 23:05:25.000000000 +1000
-+++ kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c	2004-04-17 14:23:36.000000000 +1000
-@@ -429,15 +429,12 @@
- 	unsigned char *bus_data;
- 
- 	if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {
--		panic("SMP mptable: bad signature [%c%c%c%c]!\n",
--			mpc->mpc_signature[0],
--			mpc->mpc_signature[1],
--			mpc->mpc_signature[2],
--			mpc->mpc_signature[3]);
-+		printk(KERN_ERR "SMP mptable: bad signature [0x%x]!\n",
-+			*(u32 *)mpc->mpc_signature);
- 		return 0;
- 	}
- 	if (mpf_checksum((unsigned char *)mpc,mpc->mpc_length)) {
--		panic("SMP mptable: checksum error!\n");
-+		printk(KERN_ERR "SMP mptable: checksum error!\n");
- 		return 0;
- 	}
- 	if (mpc->mpc_spec!=0x01 && mpc->mpc_spec!=0x04) {
 
 diff -urN kernel-source-2.4.26/arch/ia64/defconfig kernel-source-2.4.26-1/arch/ia64/defconfig
 --- kernel-source-2.4.26/arch/ia64/defconfig	2004-02-19 00:36:30.000000000 +1100
@@ -6478,75 +6456,7 @@
  
  	if (!skb_shinfo(skb)->nr_frags) {
  		vp->tx_ring[entry].frag[0].addr = cpu_to_le32(pci_map_single(vp->pdev, skb->data,
-diff -urN kernel-source-2.4.26/drivers/net/8139too.c kernel-source-2.4.26-1/drivers/net/8139too.c
---- kernel-source-2.4.26/drivers/net/8139too.c	2004-04-14 23:05:30.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/8139too.c	2004-04-17 14:23:48.000000000 +1000
-@@ -111,6 +111,7 @@
- #include <linux/completion.h>
- #include <linux/crc32.h>
- #include <asm/io.h>
-+#include <asm/semaphore.h>
- #include <asm/uaccess.h>
- 
- #define RTL8139_DRIVER_NAME   DRV_NAME " Fast Ethernet driver " DRV_VERSION
-@@ -591,6 +592,7 @@
- 	struct rtl_extra_stats xstats;
- 	int time_to_die;
- 	struct mii_if_info mii;
-+	struct semaphore mdio_sem;
- 	unsigned int regs_len;
- };
- 
-@@ -1003,6 +1005,7 @@
- 	tp->mii.mdio_write = mdio_write;
- 	tp->mii.phy_id_mask = 0x3f;
- 	tp->mii.reg_num_mask = 0x1f;
-+	init_MUTEX (&tp->mdio_sem);
- 
- 	/* dev is fully set up and ready to use now */
- 	DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
-@@ -1618,9 +1621,10 @@
- 		if (tp->time_to_die)
- 			break;
- 
--		rtnl_lock ();
-+		if (down_interruptible (&tp->mdio_sem))
-+			break;
- 		rtl8139_thread_iter (dev, tp, tp->mmio_addr);
--		rtnl_unlock ();
-+		up (&tp->mdio_sem);
- 	}
- 
- 	complete_and_exit (&tp->thr_exited, 0);
-@@ -2144,10 +2148,10 @@
- 		wmb();
- 		ret = kill_proc (tp->thr_pid, SIGTERM, 1);
- 		if (ret) {
--			printk (KERN_ERR "%s: unable to signal thread\n", dev->name);
--			return ret;
-+			printk (KERN_ERR "%s: unable to signal thread: %d\n", dev->name, ret);
-+		} else {
-+			wait_for_completion (&tp->thr_exited);
- 		}
--		wait_for_completion (&tp->thr_exited);
- 	}
- 	
- 	if (netif_msg_ifdown(tp))
-@@ -2388,10 +2392,14 @@
- 	if (!netif_running(dev))
- 		return -EINVAL;
- 
-+	if (down_interruptible (&np->mdio_sem))
-+		return -ERESTARTSYS;
-+
- 	spin_lock_irq(&np->lock);
- 	rc = generic_mii_ioctl(&np->mii, data, cmd, NULL);
- 	spin_unlock_irq(&np->lock);
- 
-+	up (&np->mdio_sem);
- 	return rc;
- }
- 
+
 diff -urN kernel-source-2.4.26/drivers/net/Config.in kernel-source-2.4.26-1/drivers/net/Config.in
 --- kernel-source-2.4.26/drivers/net/Config.in	2004-04-14 23:05:30.000000000 +1000
 +++ kernel-source-2.4.26-1/drivers/net/Config.in	2004-02-22 20:28:19.000000000 +1100
@@ -6614,152 +6524,8 @@
  #define	MIN_IPG	96
  #define	MAX_IPG	255
 diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c	2002-08-03 10:39:44.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c	2003-09-27 13:32:55.000000000 +1000
-@@ -53,6 +53,7 @@
- 	int ioaddr;
- 	unsigned long airqmask;
- 	struct arcnet_local *lp = dev->priv;
-+	int err;
- 
- #ifndef MODULE
- 	arcnet_init();
-@@ -66,17 +67,20 @@
- 		       "must specify the base address!\n");
- 		return -ENODEV;
- 	}
--	if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
-+	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
- 		BUGMSG(D_NORMAL, "IO region %xh-%xh already allocated.\n",
- 		       ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
- 		return -ENXIO;
- 	}
- 	if (ASTATUS() == 0xFF) {
- 		BUGMSG(D_NORMAL, "IO address %x empty\n", ioaddr);
--		return -ENODEV;
-+		err = -ENODEV;
-+		goto out;
-+	}
-+	if (com20020_check(dev)) {
-+		err = -ENODEV;
-+		goto out;
- 	}
--	if (com20020_check(dev))
--		return -ENODEV;
- 
- 	if (!dev->irq) {
- 		/* if we do this, we're sure to get an IRQ since the
-@@ -100,13 +104,21 @@
- 			dev->irq = probe_irq_off(airqmask);
- 			if (dev->irq <= 0) {
- 				BUGMSG(D_NORMAL, "Autoprobe IRQ failed.\n");
--				return -ENODEV;
-+				err = -ENODEV;
-+				goto out;
- 			}
- 		}
- 	}
- 
- 	lp->card_name = "ISA COM20020";
--	return com20020_found(dev, 0);
-+	if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
-+		goto out;
-+
-+	return 0;
-+
-+out:
-+	release_region(ioaddr, ARCNET_TOTAL_SIZE);
-+	return err;
- }
- 
- 
-@@ -182,6 +194,7 @@
- void cleanup_module(void)
- {
- 	com20020_remove(my_dev);
-+	release_region(my_dev->base_addr, ARCNET_TOTAL_SIZE);
- }
- 
- #else
 diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c	2003-06-14 00:51:34.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c	2003-09-27 13:32:55.000000000 +1000
-@@ -113,7 +113,7 @@
- 	lp->timeout = timeout;
- 	lp->hw.open_close_ll = com20020pci_open_close;
- 
--	if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
-+	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
- 		BUGMSG(D_INIT, "IO region %xh-%xh already allocated.\n",
- 		       ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
- 		err = -EBUSY;
-@@ -123,18 +123,20 @@
- 		BUGMSG(D_NORMAL, "IO address %Xh was reported by PCI BIOS, "
- 		       "but seems empty!\n", ioaddr);
- 		err = -EIO;
--		goto out_priv;
-+		goto out_port;
- 	}
- 	if (com20020_check(dev)) {
- 		err = -EIO;
--		goto out_priv;
-+		goto out_port;
- 	}
- 
- 	if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
--	        goto out_priv;
-+	        goto out_port;
- 
- 	return 0;
- 
-+out_port:
-+	release_region(ioaddr, ARCNET_TOTAL_SIZE);
- out_priv:
- 	kfree(dev->priv);
- out_dev:
-@@ -144,7 +146,9 @@
- 
- static void __devexit com20020pci_remove(struct pci_dev *pdev)
- {
--	com20020_remove(pci_get_drvdata(pdev));
-+	struct net_device *dev = pci_get_drvdata(pdev);
-+	com20020_remove(dev);
-+	release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
- }
- 
- static struct pci_device_id com20020pci_id_table[] __devinitdata = {
 diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020.c	2003-06-14 00:51:34.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c	2003-09-27 13:32:55.000000000 +1000
-@@ -204,12 +204,6 @@
- 		BUGMSG(D_NORMAL, "Can't get IRQ %d!\n", dev->irq);
- 		return -ENODEV;
- 	}
--	/* reserve the I/O region */
--	if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
--		free_irq(dev->irq, dev);
--		return -EBUSY;
--	}
--	dev->base_addr = ioaddr;
- 
- 	BUGMSG(D_NORMAL, "%s: station %02Xh found at %03lXh, IRQ %d.\n",
- 	       lp->card_name, dev->dev_addr[0], dev->base_addr, dev->irq);
-@@ -226,7 +220,6 @@
- 
- 	if (!dev->init && register_netdev(dev)) {
- 		free_irq(dev->irq, dev);
--		release_region(ioaddr, ARCNET_TOTAL_SIZE);
- 		return -EIO;
- 	}
- 	return 0;
-@@ -348,7 +341,6 @@
- {
- 	unregister_netdev(dev);
- 	free_irq(dev->irq, dev);
--	release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
- 	kfree(dev->priv);
- 	kfree(dev);
- }
 diff -urN kernel-source-2.4.26/drivers/net/hamradio/soundmodem/sm.h kernel-source-2.4.26-1/drivers/net/hamradio/soundmodem/sm.h
 --- kernel-source-2.4.26/drivers/net/hamradio/soundmodem/sm.h	2002-08-03 10:39:44.000000000 +1000
 +++ kernel-source-2.4.26-1/drivers/net/hamradio/soundmodem/sm.h	2002-03-06 19:49:48.000000000 +1100