Hi,

                Please consider applying.

                        - Arnaldo

--- linux-2.4.0-test8-pre1/drivers/net/lne390.c Mon Jun 19 17:30:58 2000
+++ linux-2.4.0-test8-pre1.acme/drivers/net/lne390.c    Fri Sep  1 15:36:19 2000
@@ -26,10 +26,13 @@
        You can try <http://www.mylex.com> if you want more info, as I've
        never even seen one of these cards.  :)
 
+       Arnaldo Carvalho de Melo <[EMAIL PROTECTED]> - 2000/09/01
+       - get rid of check_region
+       - no need to check if dev == NULL in lne390_probe1
 */
 
 static const char *version =
-       "lne390.c: Driver revision v0.99, 12/05/98\n";
+       "lne390.c: Driver revision v0.99.1, 01/09/2000\n";
 
 #include <linux/module.h>
 #include <linux/kernel.h>
@@ -104,8 +107,11 @@
 {
        unsigned short ioaddr = dev->base_addr;
 
-       if (ioaddr > 0x1ff)             /* Check a single specified location. */
+       if (ioaddr > 0x1ff) {           /* Check a single specified location. */
+               if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
+                       return -EBUSY;
                return lne390_probe1(dev, ioaddr);
+       }
        else if (ioaddr > 0)            /* Don't probe at all. */
                return -ENXIO;
 
@@ -118,10 +124,11 @@
 
        /* EISA spec allows for up to 16 slots, but 8 is typical. */
        for (ioaddr = 0x1000; ioaddr < 0x9000; ioaddr += 0x1000) {
-               if (check_region(ioaddr , LNE390_IO_EXTENT))
+               if (!request_region(ioaddr, LNE390_IO_EXTENT, "lne390"))
                        continue;
                if (lne390_probe1(dev, ioaddr) == 0)
                        return 0;
+               release_region(ioaddr, LNE390_IO_EXTENT);
        }
 
        return -ENODEV;
@@ -129,7 +136,7 @@
 
 int __init lne390_probe1(struct net_device *dev, int ioaddr)
 {
-       int i, revision;
+       int i, revision, ret;
        unsigned long eisa_id;
 
        if (inb_p(ioaddr + LNE390_ID_PORT) == 0xff) return -ENODEV;
@@ -161,13 +168,6 @@
                return -ENODEV;
        }
 #endif
-
-       /* We should have a "dev" from Space.c or the static module table. */
-       if (dev == NULL) {
-               printk("lne390.c: Passed a NULL device.\n");
-               dev = init_etherdev(0, 0);
-       }
-
        /* Allocate dev->priv and fill in 8390 specific dev fields. */
        if (ethdev_init(dev)) {
                printk ("lne390.c: unable to allocate memory for dev->priv!\n");
@@ -225,20 +225,16 @@
                        printk(KERN_CRIT "lne390.c: Use EISA SCU to set card memory 
below 1MB,\n");
                        printk(KERN_CRIT "lne390.c: or to an address above 0x%lx.\n", 
virt_to_bus(high_memory));
                        printk(KERN_CRIT "lne390.c: Driver NOT installed.\n");
-                       free_irq(dev->irq, dev);
-                       kfree(dev->priv);
-                       dev->priv = NULL;
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto cleanup;
                }
                dev->mem_start = (unsigned long)ioremap(dev->mem_start, 
LNE390_STOP_PG*0x100);
                if (dev->mem_start == 0) {
                        printk(KERN_ERR "lne390.c: Unable to remap card memory above 
1MB !!\n");
                        printk(KERN_ERR "lne390.c: Try using EISA SCU to set memory 
below 1MB.\n");
                        printk(KERN_ERR "lne390.c: Driver NOT installed.\n");
-                       free_irq(dev->irq, dev);
-                       kfree(dev->priv);
-                       dev->priv = NULL;
-                       return -EAGAIN;
+                       ret = -EAGAIN;
+                       goto cleanup;
                }
                ei_status.reg0 = 1;     /* Use as remap flag */
                printk("lne390.c: remapped %dkB card memory to virtual address %#lx\n",
@@ -251,7 +247,6 @@
 
        /* The 8390 offset is zero for the LNE390 */
        dev->base_addr = ioaddr;
-       request_region(dev->base_addr, LNE390_IO_EXTENT, "lne390");
 
        ei_status.name = "LNE390";
        ei_status.tx_start_page = LNE390_START_PG;
@@ -271,6 +266,11 @@
        dev->stop = &lne390_close;
        NS8390_init(dev, 0);
        return 0;
+cleanup:
+       free_irq(dev->irq, dev);
+       kfree(dev->priv);
+       dev->priv = NULL;
+       return ret;
 }
 
 /*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to