public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: William Lee Irwin III <wli@holomorphy.com>
To: linux-kernel@vger.kernel.org
Subject: [1/12] don't dereference netdev->name before register_netdev()
Date: Sun, 13 Jun 2004 17:33:31 -0700	[thread overview]
Message-ID: <20040614003331.GP1444@holomorphy.com> (raw)
In-Reply-To: <20040614003148.GO1444@holomorphy.com>

 * Removed dev->name lookups before register_netdev
This fixes Debian BTS #234817.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=234817

	From: Shaul Karl <shaulk@actcom.net.il>
	To: submit@bugs.debian.org
	Subject: Reports about eth%%d at boot
	Message-ID: <20040225225611.GA3532@rakefet>

  The problem is that most reports at boot time about the eth modules
use %%d instead of the interface number. For example,

    eth%%d: NE2000 found at 0x280, using IRQ 5.
    NE*000 ethercard probe at 0x240: 00 c0 f0 10 eb 56


Index: linux-2.5/drivers/net/3c501.c
===================================================================
--- linux-2.5.orig/drivers/net/3c501.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/3c501.c	2004-06-13 12:08:54.000000000 -0700
@@ -182,20 +182,12 @@
 	} else if (io != 0) {
 		err = -ENXIO;		/* Don't probe at all. */
 	} else {
-		for (port = ports; *port && el1_probe1(dev, *port); port++)
-			;
-		if (!*port)
-			err = -ENODEV;
+		for (port = ports; *port; port++)
+			if (!(err = el1_probe1(dev, *port)))
+				break;
 	}
-	if (err)
-		goto out;
-	err = register_netdev(dev);
-	if (err)
-		goto out1;
-	return dev;
-out1:
-	release_region(dev->base_addr, EL1_IO_EXTENT);
-out:
+	if (err == 0)
+		return dev;
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
@@ -220,12 +212,13 @@
 	unsigned char station_addr[6];
 	int autoirq = 0;
 	int i;
+	int err;
 
 	/*
 	 *	Reserve I/O resource for exclusive use by this driver
 	 */
 
-	if (!request_region(ioaddr, EL1_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, EL1_IO_EXTENT, "3c501"))
 		return -ENODEV;
 
 	/*
@@ -295,16 +288,6 @@
 	if (autoirq)
 		dev->irq = autoirq;
 
-	printk(KERN_INFO "%s: %s EtherLink at %#lx, using %sIRQ %d.\n", dev->name, mname, dev->base_addr,
-			autoirq ? "auto":"assigned ", dev->irq);
-
-#ifdef CONFIG_IP_MULTICAST
-	printk(KERN_WARNING "WARNING: Use of the 3c501 in a multicast kernel is NOT recommended.\n");
-#endif
-
-	if (el_debug)
-		printk(KERN_DEBUG "%s", version);
-
 	memset(dev->priv, 0, sizeof(struct net_local));
 	lp = netdev_priv(dev);
 	spin_lock_init(&lp->lock);
@@ -321,6 +304,23 @@
 	dev->get_stats = &el1_get_stats;
 	dev->set_multicast_list = &set_multicast_list;
 	dev->ethtool_ops = &netdev_ethtool_ops;
+
+	err = register_netdev(dev);
+	if (err) {
+		release_region(ioaddr, EL1_IO_EXTENT);
+		return err;
+	}
+
+	printk(KERN_INFO "%s: %s EtherLink at %#lx, using %sIRQ %d.\n", dev->name, mname, dev->base_addr,
+			autoirq ? "auto":"assigned ", dev->irq);
+
+#ifdef CONFIG_IP_MULTICAST
+	printk(KERN_WARNING "WARNING: Use of the 3c501 in a multicast kernel is NOT recommended.\n");
+#endif
+
+	if (el_debug)
+		printk(KERN_DEBUG "%s", version);
+
 	return 0;
 }
 
Index: linux-2.5/drivers/net/3c503.c
===================================================================
--- linux-2.5.orig/drivers/net/3c503.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/3c503.c	2004-06-13 12:08:54.000000000 -0700
@@ -147,6 +147,7 @@
 	release_region(dev->base_addr, EL2_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init el2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -161,7 +162,7 @@
 	err = do_el2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -171,6 +172,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Probe for the Etherlink II card at I/O port base IOADDR,
    returning non-zero on success.  If found, set the station
@@ -182,10 +184,10 @@
     static unsigned version_printed;
     unsigned long vendor_id;
 
-    if (!request_region(ioaddr, EL2_IO_EXTENT, dev->name))
+    if (!request_region(ioaddr, EL2_IO_EXTENT, "3c503"))
 	return -EBUSY;
 
-    if (!request_region(ioaddr + 0x400, 8, dev->name)) {
+    if (!request_region(ioaddr + 0x400, 8, "3c503")) {
 	retval = -EBUSY;
 	goto out;
     }
@@ -226,11 +228,11 @@
 
     dev->base_addr = ioaddr;
 
-    printk("%s: 3c503 at i/o base %#3x, node ", dev->name, ioaddr);
+    printk("3c503 at i/o base %#3x", ioaddr);
 
-    /* Retrieve and print the ethernet address. */
+    /* Retrieve the ethernet address. */
     for (i = 0; i < 6; i++)
-	printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+	dev->dev_addr[i] = inb(ioaddr + i);
 
     /* Map the 8390 back into the window. */
     outb(ECNTRL_THIN, ioaddr + 0x406);
@@ -342,16 +344,16 @@
 #endif
 
     if (dev->mem_start)
-	printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
-		dev->name, ei_status.name, (wordlength+1)<<3,
+	printk("3c503: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
+		ei_status.name, (wordlength+1)<<3,
 		dev->mem_start, dev->mem_end-1);
 
     else
     {
 	ei_status.tx_start_page = EL2_MB1_START_PG;
 	ei_status.rx_start_page = EL2_MB1_START_PG + TX_PAGES;
-	printk("\n%s: %s, %dkB RAM, using programmed I/O (REJUMPER for SHARED MEMORY).\n",
-	       dev->name, ei_status.name, (wordlength+1)<<3);
+	printk("3c503: %s, %dkB RAM, using programmed I/O (REJUMPER for SHARED MEMORY).\n",
+	       ei_status.name, (wordlength+1)<<3);
     }
     release_region(ioaddr + 0x400, 8);
     return 0;
@@ -700,7 +702,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_el2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_el2[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/8390.c
===================================================================
--- linux-2.5.orig/drivers/net/8390.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/8390.c	2004-06-13 12:08:54.000000000 -0700
@@ -1033,6 +1033,27 @@
 				ethdev_setup);
 }
 
+/**
+ * register_ei_netdev - register_netdev counterpart for 8390
+ *
+ * Register 8390-specific net_device.
+ */
+int register_ei_netdev(struct net_device *dev)
+{
+	int err;
+	int i;
+
+	err = register_netdev(dev);
+	if (err)
+		return err;
+
+	printk(KERN_INFO "%s: %s found at %#lx, IRQ %d,",
+		dev->name, ei_status.name, dev->base_addr, dev->irq);
+	for (i = 0; i < ETHER_ADDR_LEN; i++)
+		printk("%2.2X%s", dev->dev_addr[i], i == 5 ? ".\n" : ":");
+	return 0;
+}
+
 \f
 
 
@@ -1139,6 +1160,7 @@
 EXPORT_SYMBOL(ei_tx_timeout);
 EXPORT_SYMBOL(NS8390_init);
 EXPORT_SYMBOL(__alloc_ei_netdev);
+EXPORT_SYMBOL(register_ei_netdev);
 
 #if defined(MODULE)
 
Index: linux-2.5/drivers/net/8390.h
===================================================================
--- linux-2.5.orig/drivers/net/8390.h	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/8390.h	2004-06-13 12:08:54.000000000 -0700
@@ -52,6 +52,7 @@
 {
 	return __alloc_ei_netdev(0);
 }
+extern int register_ei_netdev(struct net_device *dev);
 
 /* You have one of these per-board */
 struct ei_device {
Index: linux-2.5/drivers/net/ac3200.c
===================================================================
--- linux-2.5.orig/drivers/net/ac3200.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/ac3200.c	2004-06-13 12:08:54.000000000 -0700
@@ -130,6 +130,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init ac3200_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -144,7 +145,7 @@
 	err = do_ac3200_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -154,12 +155,13 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ac_probe1(int ioaddr, struct net_device *dev)
 {
 	int i, retval;
 
-	if (!request_region(ioaddr, AC_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, AC_IO_EXTENT, "ac3200"))
 		return -EBUSY;
 
 	if (inb_p(ioaddr + AC_ID_PORT) == 0xff) {
@@ -179,9 +181,9 @@
 		   inb(ioaddr + AC_ID_PORT + 2), inb(ioaddr + AC_ID_PORT + 3));
 #endif
 
-	printk("AC3200 in EISA slot %d, node", ioaddr/0x1000);
+	printk("AC3200 in EISA slot %d", ioaddr/0x1000);
 	for(i = 0; i < 6; i++)
-		printk(" %02x", dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i));
+		dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i);
 
 #if 0
 	/* Check the vendor ID/prefix. Redundant after checking the EISA ID */
@@ -203,7 +205,7 @@
 		printk(", assigning");
 	}
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ac3200", dev);
 	if (retval) {
 		printk (" nothing! Unable to get IRQ %d.\n", dev->irq);
 		goto out1;
@@ -227,8 +229,8 @@
 	dev->if_port = inb(ioaddr + AC_CONFIG) >> 6;
 	dev->mem_start = config2mem(inb(ioaddr + AC_CONFIG));
 
-	printk("%s: AC3200 at %#3x with %dkB memory at physical address %#lx.\n", 
-			dev->name, ioaddr, AC_STOP_PG/4, dev->mem_start);
+	printk("ac3200: AC3200 at %#3x with %dkB memory at physical address %#lx.\n", 
+			ioaddr, AC_STOP_PG/4, dev->mem_start);
 
 	/*
 	 *  BEWARE!! Some dain-bramaged EISA SCUs will allow you to put
@@ -398,7 +400,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];		/* Currently ignored by driver */
 		if (do_ac3200_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ac32[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/apne.c
===================================================================
--- linux-2.5.orig/drivers/net/apne.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/apne.c	2004-06-13 12:08:54.000000000 -0700
@@ -168,7 +168,7 @@
 		return ERR_PTR(-ENODEV);
 	}
 
-	if (!request_region(IOBASE, 0x20, dev->name)) {
+	if (!request_region(IOBASE, 0x20, "apne")) {
 		free_netdev(dev);
 		return ERR_PTR(-EBUSY);
 	}
@@ -179,7 +179,7 @@
 		free_netdev(dev);
 		return ERR_PTR(err);
 	}
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (!err)
 		return dev;
 
@@ -310,15 +310,12 @@
     dev->base_addr = ioaddr;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, apne_interrupt, SA_SHIRQ, "apne", dev);
     if (i) return i;
 
-    for(i = 0; i < ETHER_ADDR_LEN; i++) {
-	printk(" %2.2x", SA_prom[i]);
-	dev->dev_addr[i] = SA_prom[i];
-    }
+    memcpy(dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-    printk("\n%s: %s found.\n", dev->name, name);
+    printk("\n");
 
     ei_status.name = name;
     ei_status.tx_start_page = start_page;
Index: linux-2.5/drivers/net/e2100.c
===================================================================
--- linux-2.5.orig/drivers/net/e2100.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/e2100.c	2004-06-13 12:08:54.000000000 -0700
@@ -144,6 +144,7 @@
 	release_region(dev->base_addr, E21_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init e2100_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -158,7 +159,7 @@
 	err = do_e2100_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -168,6 +169,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init e21_probe1(struct net_device *dev, int ioaddr)
 {
@@ -175,7 +177,7 @@
 	unsigned char *station_addr = dev->dev_addr;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, E21_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, E21_IO_EXTENT, "e2100"))
 		return -EBUSY;
 
 	/* First check the station address for the Ctron prefix. */
@@ -205,8 +207,7 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	for (i = 0; i < 6; i++)
-		printk(" %02X", station_addr[i]);
+	printk("e2100: E2100 at %#3x", ioaddr);
 
 	if (dev->irq < 2) {
 		int irqlist[] = {15,11,10,12,5,9,3,4}, i;
@@ -441,7 +442,7 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = xcvr[this_dev];	/* low 4bits = xcvr sel. */
 		if (do_e2100_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_e21[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/es3210.c
===================================================================
--- linux-2.5.orig/drivers/net/es3210.c	2004-06-13 11:57:14.000000000 -0700
+++ linux-2.5/drivers/net/es3210.c	2004-06-13 12:08:54.000000000 -0700
@@ -161,6 +161,7 @@
 	release_region(dev->base_addr, ES_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init es_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -175,7 +176,7 @@
 	err = do_es_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -185,6 +186,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init es_probe1(struct net_device *dev, int ioaddr)
 {
@@ -221,9 +223,9 @@
 		goto out;
 	}
 
-	printk("es3210.c: ES3210 rev. %ld at %#x, node", eisa_id>>24, ioaddr);
+	printk("es3210.c: ES3210 rev. %ld at %#x", eisa_id>>24, ioaddr);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i)));
+		dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i);
 
 	/* Snarf the interrupt now. */
 	if (dev->irq == 0) {
@@ -437,7 +439,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_es_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_es3210[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/hp-plus.c
===================================================================
--- linux-2.5.orig/drivers/net/hp-plus.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/hp-plus.c	2004-06-13 12:08:54.000000000 -0700
@@ -142,6 +142,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_plus_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -156,7 +157,7 @@
 	err = do_hpp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -166,6 +167,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 /* Do the interesting part of the probe at a single address. */
 static int __init hpp_probe1(struct net_device *dev, int ioaddr)
@@ -176,7 +178,7 @@
 	int mem_start;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, "hp-plus"))
 		return -EBUSY;
 
 	/* Check for the HP+ signature, 50 48 0x 53. */
@@ -189,7 +191,7 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: %s at %#3x,", dev->name, name, ioaddr);
+	printk("hp-plus: %s at %#3x,", name, ioaddr);
 
 	/* Retrieve and checksum the station address. */
 	outw(MAC_Page, ioaddr + HP_PAGING);
@@ -459,7 +461,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hpp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_hpp[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/hp.c
===================================================================
--- linux-2.5.orig/drivers/net/hp.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/hp.c	2004-06-13 12:08:54.000000000 -0700
@@ -106,6 +106,7 @@
 	release_region(dev->base_addr - NIC_OFFSET, HP_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init hp_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -120,7 +121,7 @@
 	err = do_hp_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -130,6 +131,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init hp_probe1(struct net_device *dev, int ioaddr)
 {
@@ -137,7 +139,7 @@
 	const char *name;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, HP_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, HP_IO_EXTENT, "hp"))
 		return -EBUSY;
 
 	/* Check for the HP physical address, 08 00 09 xx xx xx. */
@@ -164,10 +166,10 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: %s (ID %02x) at %#3x,", dev->name, name, board_id, ioaddr);
+	printk("hp: %s (ID %02x) at %#3x", name, board_id, ioaddr);
 
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+		dev->dev_addr[i] = inb(ioaddr + i);
 
 	/* Snarf the interrupt now.  Someday this could be moved to open(). */
 	if (dev->irq < 2) {
@@ -182,7 +184,7 @@
 				outb_p(irqmap[irq] | HP_RUN, ioaddr + HP_CONFIGURE);
 				outb_p( 0x00 | HP_RUN, ioaddr + HP_CONFIGURE);
 				if (irq == probe_irq_off(cookie)		 /* It's a good IRQ line! */
-					&& request_irq (irq, ei_interrupt, 0, dev->name, dev) == 0) {
+					&& request_irq (irq, ei_interrupt, 0, "hp", dev) == 0) {
 					printk(" selecting IRQ %d.\n", irq);
 					dev->irq = *irqp;
 					break;
@@ -197,12 +199,14 @@
 	} else {
 		if (dev->irq == 2)
 			dev->irq = 9;
-		if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+		if ((retval = request_irq(dev->irq, ei_interrupt, 0, "hp", dev))) {
 			printk (" unable to get IRQ %d.\n", dev->irq);
 			goto out;
 		}
 	}
 
+	printk("\n");
+
 	/* Set the base address to point to the NIC, not the "real" base! */
 	dev->base_addr = ioaddr + NIC_OFFSET;
 	dev->open = &hp_open;
@@ -428,7 +432,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_hp_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_hp[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/hydra.c
===================================================================
--- linux-2.5.orig/drivers/net/hydra.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/hydra.c	2004-06-13 12:08:54.000000000 -0700
@@ -144,7 +144,7 @@
 
     NS8390_init(dev, 0);
 
-    err = register_netdev(dev);
+    err = register_ei_netdev(dev);
     if (err) {
 	free_irq(IRQ_AMIGA_PORTS, dev);
 	free_netdev(dev);
@@ -242,6 +242,7 @@
 
 static int __init hydra_init_module(void)
 {
+    printk("hydra.c " HYDRA_VERSION "\n");
     return zorro_module_init(&hydra_driver);
 }
 
Index: linux-2.5/drivers/net/lne390.c
===================================================================
--- linux-2.5.orig/drivers/net/lne390.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/lne390.c	2004-06-13 12:08:54.000000000 -0700
@@ -112,7 +112,7 @@
 	SET_MODULE_OWNER(dev);
 
 	if (ioaddr > 0x1ff) {		/* Check a single specified location. */
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
 			return -EBUSY;
 		ret = lne390_probe1(dev, ioaddr);
 		if (ret)
@@ -131,7 +131,7 @@
 
 	/* EISA spec allows for up to 16 slots, but 8 is typical. */
 	for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000) {
-		if (!request_region(ioaddr, LNE390_IO_EXTENT, dev->name))
+		if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
 			continue;
 		if (lne390_probe1(dev, ioaddr) == 0)
 			return 0;
@@ -151,6 +151,7 @@
 		iounmap((void *)dev->mem_start);
 }
 
+#ifndef MODULE
 struct net_device * __init lne390_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -165,7 +166,7 @@
 	err = do_lne390_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -175,6 +176,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init lne390_probe1(struct net_device *dev, int ioaddr)
 {
@@ -211,10 +213,9 @@
 	}
 #endif
 
-	printk("lne390.c: LNE390%X in EISA slot %d, address", 0xa+revision, ioaddr/0x1000);
+	printk("lne390.c: LNE390%X in EISA slot %d.\nlne3900.c: ", 0xa+revision, ioaddr/0x1000);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + LNE390_SA_PROM + i)));
-	printk(".\nlne390.c: ");
+		dev->dev_addr[i] = inb(ioaddr + LNE390_SA_PROM + i);
 
 	/* Snarf the interrupt now. CFG file has them all listed as `edge' with share=NO */
 	if (dev->irq == 0) {
@@ -228,7 +229,7 @@
 	}
 	printk(" IRQ %d,", dev->irq);
 
-	if ((ret = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) {
+	if ((ret = request_irq(dev->irq, ei_interrupt, 0, "lne390", dev))) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return ret;
 	}
@@ -432,7 +433,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = mem[this_dev];
 		if (do_lne390_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_lne[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/mac8390.c
===================================================================
--- linux-2.5.orig/drivers/net/mac8390.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/mac8390.c	2004-06-13 12:08:54.000000000 -0700
@@ -273,16 +273,15 @@
 		   of where its memory and registers are. */
 
 		if (nubus_get_func_dir(ndev, &dir) == -1) {
-			printk(KERN_ERR "%s: Unable to get Nubus functional"
+			printk(KERN_ERR "mac8390: Unable to get Nubus functional"
 					" directory for slot %X!\n",
-			       dev->name, ndev->board->slot);
+			       ndev->board->slot);
 			continue;
 		}
 		
 		/* Get the MAC address */
 		if ((nubus_find_rsrc(&dir, NUBUS_RESID_MAC_ADDRESS, &ent)) == -1) {
-			printk(KERN_INFO "%s: Couldn't get MAC address!\n",
-					dev->name);
+			printk(KERN_INFO "mac8390: Couldn't get MAC address!\n");
 			continue;
 		} else {
 			nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
@@ -299,9 +298,9 @@
 		if (useresources[cardtype] == 1) {
 			nubus_rewinddir(&dir);
 			if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_BASEOS, &ent) == -1) {
-				printk(KERN_ERR "%s: Memory offset resource"
+				printk(KERN_ERR "mac8390: Memory offset resource"
 						" for slot %X not found!\n",
-				       dev->name, ndev->board->slot);
+				       ndev->board->slot);
 				continue;
 			}
 			nubus_get_rsrc_mem(&offset, &ent, 4);
@@ -310,10 +309,10 @@
 			dev->base_addr = dev->mem_start + 0x10000;
 			nubus_rewinddir(&dir);
 			if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_LENGTH, &ent) == -1) {
-				printk(KERN_INFO "%s: Memory length resource"
+				printk(KERN_INFO "mac8390: Memory length resource"
 						 " for slot %X not found"
 						 ", probing\n",
-				       dev->name, ndev->board->slot);
+				       ndev->board->slot);
 				offset = mac8390_memsize(dev->mem_start);
 				} else {
 					nubus_get_rsrc_mem(&offset, &ent, 4);
@@ -368,7 +367,7 @@
 
 	if (!ndev)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out;
 	return dev;
@@ -518,18 +517,9 @@
 	NS8390_init(dev, 0);
 
 	/* Good, done, now spit out some messages */
-	printk(KERN_INFO "%s: %s in slot %X (type %s)\n",
-		   dev->name, ndev->board->name, ndev->board->slot, cardname[type]);
-	printk(KERN_INFO "MAC ");
-	{
-		int i;
-		for (i = 0; i < 6; i++) {
-			printk("%2.2x", dev->dev_addr[i]);
-			if (i < 5)
-				printk(":");
-		}
-	}
-	printk(" IRQ %d, shared memory at %#lx-%#lx,  %d-bit access.\n",
+	printk(KERN_INFO "%s in slot %X (type %s)\n",
+		   ndev->board->name, ndev->board->slot, cardname[type]);
+	printk(KERN_INFO "IRQ %d, shared memory at %#lx-%#lx,  %d-bit access.\n",
 		   dev->irq, dev->mem_start, dev->mem_end-1, 
 		   access_bitmode?32:16);
 	return 0;
Index: linux-2.5/drivers/net/ne.c
===================================================================
--- linux-2.5.orig/drivers/net/ne.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/ne.c	2004-06-13 12:08:54.000000000 -0700
@@ -203,6 +203,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -217,7 +218,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -227,6 +228,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_isapnp(struct net_device *dev)
 {
@@ -284,7 +286,7 @@
 	int reg0, ret;
 	static unsigned version_printed;
 
-	if (!request_region(ioaddr, NE_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, NE_IO_EXTENT, "ne"))
 		return -EBUSY;
 
 	reg0 = inb_p(ioaddr);
@@ -472,13 +474,9 @@
 
 	dev->base_addr = ioaddr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
-		dev->name, name, ioaddr, dev->irq);
+	printk("\n");
 
 	ei_status.name = name;
 	ei_status.tx_start_page = start_page;
@@ -794,7 +792,7 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/ne2.c
===================================================================
--- linux-2.5.orig/drivers/net/ne2.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/ne2.c	2004-06-13 12:08:54.000000000 -0700
@@ -284,6 +284,7 @@
 	release_region(dev->base_addr, NE_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ne2_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -298,7 +299,7 @@
 	err = do_ne2_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -308,6 +309,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int ne2_procinfo(char *buf, int slot, struct net_device *dev)
 {
@@ -368,7 +370,7 @@
 		irq = irqs[(POS & 0x60)>>5];
 	}
 
-	if (!request_region(base_addr, NE_IO_EXTENT, dev->name))
+	if (!request_region(base_addr, NE_IO_EXTENT, "ne2"))
 		return -EBUSY;
 
 #ifdef DEBUG
@@ -470,7 +472,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ne2", dev);
 	if (retval) {
 		printk (" unable to get IRQ %d (irqval=%d).\n", 
 				dev->irq, retval);
@@ -479,13 +481,9 @@
 
 	dev->base_addr = base_addr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
-			dev->name, name, base_addr, dev->irq);
+	printk("\n");
 
 	mca_set_adapter_procfn(slot, (MCA_ProcFn) ne2_procinfo, dev);
 
@@ -796,7 +794,7 @@
 		dev->mem_end = bad[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ne2_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/ne2k-pci.c
===================================================================
--- linux-2.5.orig/drivers/net/ne2k-pci.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/ne2k-pci.c	2004-06-13 12:08:54.000000000 -0700
@@ -362,17 +362,12 @@
 #endif
 	NS8390_init(dev, 0);
 
-	i = register_netdev(dev);
+	memcpy(dev->dev_addr, SA_prom, 6);
+
+	i = register_ei_netdev(dev);
 	if (i)
 		goto err_out_free_netdev;
 
-	printk("%s: %s found at %#lx, IRQ %d, ",
-		   dev->name, pci_clone_list[chip_idx].name, ioaddr, dev->irq);
-	for(i = 0; i < 6; i++) {
-		printk("%2.2X%s", SA_prom[i], i == 5 ? ".\n": ":");
-		dev->dev_addr[i] = SA_prom[i];
-	}
-
 	return 0;
 
 err_out_free_netdev:
Index: linux-2.5/drivers/net/ne2k_cbus.c
===================================================================
--- linux-2.5.orig/drivers/net/ne2k_cbus.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/ne2k_cbus.c	2004-06-13 12:08:54.000000000 -0700
@@ -187,6 +187,7 @@
 	ne2k_cbus_destroy(dev);
 }
 
+#ifndef MODULE
 struct net_device * __init ne_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -201,7 +202,7 @@
 	err = do_ne_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -211,6 +212,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ne_probe_cbus(struct net_device *dev, const struct ne2k_cbus_hwinfo *hw, int ioaddr, int irq)
 {
@@ -263,7 +265,7 @@
 
 	for (rlist = hw->regionlist; rlist->range; rlist++)
 		if (!request_region(ioaddr + rlist->start,
-					rlist->range, dev->name)) {
+					rlist->range, "ne2k_cbus")) {
 			ret = -EBUSY;
 			goto err_out;
 		}
@@ -508,13 +510,10 @@
 
 	dev->base_addr = ioaddr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
-		dev->dev_addr[i] = SA_prom[i];
-	}
+	memcpy(dev->dev_addr, SA_prom, ETHER_ADDR_LEN);
 
-	printk("\n%s: %s found at %#x, hardware type %d(%s), using IRQ %d.\n",
-		   dev->name, name, ioaddr, hw->hwtype, hw->hwident, dev->irq);
+	printk("\nne2k_cbus: %s found at %#x, hardware type %d(%s), using IRQ %d.\n",
+		   name, ioaddr, hw->hwtype, hw->hwident, dev->irq);
 
 	ei_status.name = name;
 	ei_status.tx_start_page = start_page;
@@ -850,7 +849,7 @@
 		dev->base_addr = io[this_dev];
 		dev->mem_start = hwtype[this_dev];
 		if (do_ne_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ne[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/ne3210.c
===================================================================
--- linux-2.5.orig/drivers/net/ne3210.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/ne3210.c	2004-06-13 12:08:54.000000000 -0700
@@ -111,13 +111,13 @@
 	device->driver_data = dev;
 	ioaddr = edev->base_addr;
 
-	if (!request_region(ioaddr, NE3210_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, NE3210_IO_EXTENT, "ne3210")) {
 		retval = -EBUSY;
 		goto out;
 	}
 
 	if (!request_region(ioaddr + NE3210_CFG1,
-			    NE3210_CFG_EXTENT, dev->name)) {
+			    NE3210_CFG_EXTENT, "ne3210")) {
 		retval = -EBUSY;
 		goto out1;
 	}
@@ -133,14 +133,14 @@
 	printk("ne3210.c: NE3210 in EISA slot %d, media: %s, addr:",
 		edev->slot, ifmap[port_index]);
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + NE3210_SA_PROM + i)));
+		dev->dev_addr[i] = inb(ioaddr + NE3210_SA_PROM + i);
 	
 
 	/* Snarf the interrupt now. CFG file has them all listed as `edge' with share=NO */
 	dev->irq = irq_map[(inb(ioaddr + NE3210_CFG2) >> 3) & 0x07];
 	printk(".\nne3210.c: using IRQ %d, ", dev->irq);
 
-	retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	retval = request_irq(dev->irq, ei_interrupt, 0, "ne3210", dev);
 	if (retval) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		goto out2;
@@ -163,7 +163,7 @@
 		}
 	}
 	
-	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, dev->name)) {
+	if (!request_mem_region (phys_mem, NE3210_STOP_PG*0x100, "ne3210")) {
 		printk ("ne3210.c: Unable to request shared memory at physical address %#lx\n",
 			phys_mem);
 		goto out3;
@@ -210,7 +210,7 @@
 #endif
 	dev->if_port = ifmap_val[port_index];
 
-	if ((retval = register_netdev (dev)))
+	if ((retval = register_ei_netdev (dev)))
 		goto out5;
 		
 	NS8390_init(dev, 0);
Index: linux-2.5/drivers/net/oaknet.c
===================================================================
--- linux-2.5.orig/drivers/net/oaknet.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/oaknet.c	2004-06-13 12:08:54.000000000 -0700
@@ -164,18 +164,13 @@
 	ret = -EAGAIN;
 	if (request_irq(dev->irq, ei_interrupt, 0, name, dev)) {
 		printk("%s: unable to request interrupt %d.\n",
-		       dev->name, dev->irq);
+		       name, dev->irq);
 		goto out_region;
 	}
 
 	/* Tell the world about what and where we've found. */
 
-	printk("%s: %s at", dev->name, name);
-	for (i = 0; i < ETHER_ADDR_LEN; ++i) {
-		dev->dev_addr[i] = bip->bi_enetaddr[i];
-		printk("%c%.2x", (i ? ':' : ' '), dev->dev_addr[i]);
-	}
-	printk(", found at %#lx, using IRQ %d.\n", dev->base_addr, dev->irq);
+	memcpy(dev->dev_addr, bip->bi_enetaddr, ETHER_ADDR_LEN);
 
 	/* Set up some required driver fields and then we're done. */
 
@@ -197,7 +192,7 @@
 #endif
 
 	NS8390_init(dev, FALSE);
-	ret = register_netdev(dev);
+	ret = register_ei_netdev(dev);
 	if (ret)
 		goto out_irq;
 	
Index: linux-2.5/drivers/net/smc-mca.c
===================================================================
--- linux-2.5.orig/drivers/net/smc-mca.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/smc-mca.c	2004-06-13 12:08:54.000000000 -0700
@@ -265,7 +265,7 @@
 		goto err_unclaim;
 	}
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name)) {
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, "smc-mca")) {
 		rc = -ENODEV;
 		goto err_unclaim;
 	}
@@ -276,7 +276,7 @@
 	printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x,", slot + 1, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set
 	 * and read the useful registers there.
@@ -330,7 +330,7 @@
 
 	NS8390_init(dev, 0);
 
-	rc = register_netdev(dev);
+	rc = register_ei_netdev(dev);
 	if (rc)
 		goto err_release_region;
 
Index: linux-2.5/drivers/net/smc-ultra.c
===================================================================
--- linux-2.5.orig/drivers/net/smc-ultra.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/smc-ultra.c	2004-06-13 12:08:54.000000000 -0700
@@ -178,6 +178,7 @@
 	release_region(dev->base_addr - ULTRA_NIC_OFFSET, ULTRA_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init ultra_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -192,7 +193,7 @@
 	err = do_ultra_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -202,6 +203,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init ultra_probe1(struct net_device *dev, int ioaddr)
 {
@@ -215,7 +217,7 @@
 	unsigned char idreg = inb(ioaddr + 7);
 	unsigned char reg4 = inb(ioaddr + 4) & 0x7f;
 
-	if (!request_region(ioaddr, ULTRA_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA_IO_EXTENT, "smc-ultra"))
 		return -EBUSY;
 
 	/* Check the ID nibble. */
@@ -240,10 +242,10 @@
 
 	model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";
 
-	printk("%s: %s at %#3x,", dev->name, model_name, ioaddr);
+	printk("smc-ultra: %s at %#3x", model_name, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
@@ -575,7 +577,7 @@
 		dev->irq = irq[this_dev];
 		dev->base_addr = io[this_dev];
 		if (do_ultra_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_ultra[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/smc-ultra32.c
===================================================================
--- linux-2.5.orig/drivers/net/smc-ultra32.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/smc-ultra32.c	2004-06-13 12:08:54.000000000 -0700
@@ -141,7 +141,7 @@
 	}
 	if (base >= 0x9000)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -163,7 +163,7 @@
 	unsigned char reg4;
 	const char *ifmap[] = {"UTP No Link", "", "UTP/AUI", "UTP/BNC"};
 
-	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, dev->name))
+	if (!request_region(ioaddr, ULTRA32_IO_EXTENT, "smc-ultra32"))
 		return -EBUSY;
 
 	if (inb(ioaddr + ULTRA32_IDPORT) == 0xff ||
@@ -202,10 +202,10 @@
 
 	model_name = "SMC Ultra32";
 
-	printk("%s: %s at 0x%X,", dev->name, model_name, ioaddr);
+	printk("smc-ultra32: %s at 0x%X,", model_name, ioaddr);
 
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
Index: linux-2.5/drivers/net/stnic.c
===================================================================
--- linux-2.5.orig/drivers/net/stnic.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/stnic.c	2004-06-13 12:08:54.000000000 -0700
@@ -130,14 +130,14 @@
 
   /* Snarf the interrupt now.  There's no point in waiting since we cannot
      share and the board will usually be enabled. */
-  err = request_irq (dev->irq, ei_interrupt, 0, dev->name, dev);
+  err = request_irq (dev->irq, ei_interrupt, 0, "stnic", dev);
   if (err)  {
       printk (KERN_EMERG " unable to get IRQ %d.\n", dev->irq);
       free_netdev(dev);
       return err;
     }
 
-  ei_status.name = dev->name;
+  ei_status.name = "stnic";
   ei_status.word16 = 1;
 #ifdef __LITTLE_ENDIAN__ 
   ei_status.bigendian = 0;
@@ -155,7 +155,7 @@
 
   stnic_init (dev);
 
-  err = register_netdev(dev);
+  err = register_ei_netdev(dev);
   if (err) {
     free_irq(dev->irq, dev);
     free_netdev(dev);
Index: linux-2.5/drivers/net/tokenring/ibmtr.c
===================================================================
--- linux-2.5.orig/drivers/net/tokenring/ibmtr.c	2004-06-13 11:57:21.000000000 -0700
+++ linux-2.5/drivers/net/tokenring/ibmtr.c	2004-06-13 12:08:54.000000000 -0700
@@ -371,7 +371,10 @@
 	for (i = 0; ibmtr_portlist[i]; i++) {
 		int ioaddr = ibmtr_portlist[i];
 
+		if (!request_region(ioaddr, IBMTR_IO_EXTENT, "ibmtr"))
+			continue;
 		if (!ibmtr_probe1(dev, ioaddr)) return 0;
+		release_region(ioaddr, IBMTR_IO_EXTENT);
 	}
 	return -ENODEV;
 }
@@ -691,15 +694,6 @@
 		kfree(ti);
 		return -ENODEV;
 	}
-	/*?? Now, allocate some of the PIO PORTs for this driver.. */
-	/* record PIOaddr range as busy */
-	if (!request_region(PIOaddr, IBMTR_IO_EXTENT, "ibmtr")) {
-		DPRINTK("Could not grab PIO range. Halting driver.\n");
-		free_irq(dev->irq, dev);
-		iounmap(t_mmio);
-		kfree(ti);
-		return -EBUSY;
-	}
 
 	if (!version_printed++) {
 		printk(version);
Index: linux-2.5/drivers/net/wd.c
===================================================================
--- linux-2.5.orig/drivers/net/wd.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/wd.c	2004-06-13 12:08:54.000000000 -0700
@@ -131,6 +131,7 @@
 	release_region(dev->base_addr - WD_NIC_OFFSET, WD_IO_EXTENT);
 }
 
+#ifndef MODULE
 struct net_device * __init wd_probe(int unit)
 {
 	struct net_device *dev = alloc_ei_netdev();
@@ -145,7 +146,7 @@
 	err = do_wd_probe(dev);
 	if (err)
 		goto out;
-	err = register_netdev(dev);
+	err = register_ei_netdev(dev);
 	if (err)
 		goto out1;
 	return dev;
@@ -155,6 +156,7 @@
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
+#endif
 
 static int __init wd_probe1(struct net_device *dev, int ioaddr)
 {
@@ -182,9 +184,9 @@
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: WD80x3 at %#3x,", dev->name, ioaddr);
+	printk("wd: WD80x3 at %#3x,", ioaddr);
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
 	/* The following PureData probe code was contributed by
 	   Mike Jagdis <jaggy@purplet.demon.co.uk>. Puredata does software
@@ -300,7 +302,7 @@
 
 	/* Snarf the interrupt now.  There's no point in waiting since we cannot
 	   share and the board will usually be enabled. */
-	i = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev);
+	i = request_irq(dev->irq, ei_interrupt, 0, "wd", dev);
 	if (i) {
 		printk (" unable to get IRQ %d.\n", dev->irq);
 		return i;
@@ -515,7 +517,7 @@
 		dev->mem_start = mem[this_dev];
 		dev->mem_end = mem_end[this_dev];
 		if (do_wd_probe(dev) == 0) {
-			if (register_netdev(dev) == 0) {
+			if (register_ei_netdev(dev) == 0) {
 				dev_wd[found++] = dev;
 				continue;
 			}
Index: linux-2.5/drivers/net/zorro8390.c
===================================================================
--- linux-2.5.orig/drivers/net/zorro8390.c	2004-06-13 11:57:15.000000000 -0700
+++ linux-2.5/drivers/net/zorro8390.c	2004-06-13 12:08:54.000000000 -0700
@@ -115,7 +115,7 @@
     if (!dev)
 	return -ENOMEM;
     SET_MODULE_OWNER(dev);
-    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, dev->name)) {
+    if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, "zorro8390")) {
 	free_netdev(dev);
 	return -EBUSY;
     }
@@ -198,7 +198,7 @@
     dev->irq = IRQ_AMIGA_PORTS;
 
     /* Install the Interrupt handler */
-    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, dev->name, dev);
+    i = request_irq(IRQ_AMIGA_PORTS, ei_interrupt, SA_SHIRQ, "zorro8390", dev);
     if (i) return i;
 
     for(i = 0; i < ETHER_ADDR_LEN; i++) {
@@ -227,7 +227,7 @@
 #endif
 
     NS8390_init(dev, 0);
-    err = register_netdev(dev);
+    err = register_ei_netdev(dev);
     if (err) {
 	free_irq(IRQ_AMIGA_PORTS, dev);
 	return err;

  reply	other threads:[~2004-06-14  0:35 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-14  0:31 [0/12] Debian bugfixes William Lee Irwin III
2004-06-14  0:33 ` William Lee Irwin III [this message]
2004-06-14  0:34   ` [2/12] lower priority of "too many keys" msg in atkbd.c William Lee Irwin III
2004-06-14  0:36     ` [3/12] remove irda usage of isa_virt_to_bus() William Lee Irwin III
2004-06-14  0:37       ` [4/12] unregister driver if probing fails in sb_card.c William Lee Irwin III
2004-06-14  0:38         ` [5/12] Ignore errors from tw_setfeature in 3w-xxxx.c William Lee Irwin III
2004-06-14  0:39           ` [6/12] fix advansys.c highmem bugs William Lee Irwin III
2004-06-14  0:40             ` [7/12] Handle NO_SENSE in sd_rw_intr in sd.c William Lee Irwin III
2004-06-14  0:41               ` [8/12] fake inquiry for Sony Clie PEG-TJ25 in unusual_devs.h William Lee Irwin III
2004-06-14  0:43                 ` [9/12] fix duplicate environment variables passed to init William Lee Irwin III
2004-06-14  0:45                   ` [10/12] fix handling of '/' embedded in filenames in isofs William Lee Irwin III
2004-06-14  0:47                     ` [11/12] fix isofs ignoring noexec and mode mount options William Lee Irwin III
2004-06-14  0:48                       ` [12/12] fix thread_info.h ignoring __HAVE_THREAD_FUNCTIONS William Lee Irwin III
2004-06-14  8:16                         ` Christoph Hellwig
2004-06-14  8:34                           ` William Lee Irwin III
2004-06-14 10:19                           ` Roman Zippel
2004-06-14 10:23                             ` Christoph Hellwig
2004-06-14 10:47                               ` Roman Zippel
2004-06-14  8:15                     ` [10/12] fix handling of '/' embedded in filenames in isofs Christoph Hellwig
2004-06-14  8:14                 ` [8/12] fake inquiry for Sony Clie PEG-TJ25 in unusual_devs.h Christoph Hellwig
2004-06-14  8:14               ` [7/12] Handle NO_SENSE in sd_rw_intr in sd.c Christoph Hellwig
2004-06-14  4:26             ` [6/12] fix advansys.c highmem bugs Andrew Morton
2004-06-14  8:11               ` William Lee Irwin III
2004-06-14  8:13             ` Christoph Hellwig
2004-06-14  8:12           ` [5/12] Ignore errors from tw_setfeature in 3w-xxxx.c Christoph Hellwig
2004-06-14  8:11       ` [3/12] remove irda usage of isa_virt_to_bus() Christoph Hellwig
2004-06-14  8:11     ` [2/12] lower priority of "too many keys" msg in atkbd.c Christoph Hellwig
2004-06-14  4:14   ` [1/12] don't dereference netdev->name before register_netdev() Andrew Morton
2004-06-14  4:27   ` Jeff Garzik
2004-06-14  5:26     ` Herbert Xu
2004-06-14  8:21       ` William Lee Irwin III
2004-06-14  8:10   ` Christoph Hellwig
2004-06-14  8:22     ` William Lee Irwin III

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040614003331.GP1444@holomorphy.com \
    --to=wli@holomorphy.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox