This message generated a parse failure. Raw output follows here. Please use 'back' to navigate. From devnull@lkml.org Sun May 5 16:28:39 2024 Received: from spaans.ds9a.nl (adsl-xs4all.ds9a.nl [213.84.159.51]) by kylie.puddingonline.com (8.11.6/8.11.6) with SMTP id g8HKhji10310 for ; Tue, 17 Sep 2002 22:43:48 +0200 Received: (qmail 1046 invoked from network); 17 Sep 2002 20:25:37 -0000 Received: from unknown (HELO spaans.ds9a.nl) (3ffe:8280:10:360:202:44ff:fe2a:a1dd) by mayo.ipv6.ds9a.nl with SMTP; 17 Sep 2002 20:25:37 -0000 Received: (qmail 25267 invoked by uid 1000); 17 Sep 2002 19:46:49 -0000 Received: (maildatabase); juh Received: (qmail 23698 invoked by alias); 23 Oct 2000 14:01:27 -0000 Received: (qmail 23335 invoked from network); 23 Oct 2000 13:50:31 -0000 Received: from vger.kernel.org (199.183.24.194) by spaans.ds9a.nl with SMTP; 23 Oct 2000 13:50:31 -0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Mon, 23 Oct 2000 10:05:49 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Mon, 23 Oct 2000 10:05:39 -0400 Received: from orbita.don.sitek.net ([213.24.25.98]:32268 "EHLO orbita.don.sitek.net") by vger.kernel.org with ESMTP id ; Mon, 23 Oct 2000 10:05:30 -0400 Received: from pazke by orbita.don.sitek.net with local (Exim 3.03 #1) id 13nhzX-00051e-00 for linux-kernel@vger.kernel.org; Mon, 23 Oct 2000 17:50:19 +0400 Date: Mon, 23 Oct 2000 17:50:18 +0400 From: Andrey Panin To: linux-kernel@vger.kernel.org Subject: [PATCH] ac3200.c, ni52.c: check_region() removal etc. Message-Id: <20001023175018.A18567@server.ipt> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="PNTmBPCT7hxwcZjr" Content-Disposition: inline User-Agent: Mutt/1.2.5i Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org --PNTmBPCT7hxwcZjr Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi all, check_region() removed, zero initializers of static variables removed, module_init() & module_exit() added. Best regards, Andrey -- Andrey Panin | Embedded systems software engineer pazke@orbita1.ru | PGP key: http://www.orbita1.ru/~pazke/AndreyPanin.asc --PNTmBPCT7hxwcZjr Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patch-ac3200 diff -urN /mnt/disk/linux/drivers/net/ac3200.c /linux/drivers/net/ac3200.c --- /mnt/disk/linux/drivers/net/ac3200.c Fri Oct 20 22:03:22 2000 +++ /linux/drivers/net/ac3200.c Sun Oct 22 18:45:59 2000 @@ -116,14 +116,20 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev) { - int i; + int i, retval; - if (inb_p(ioaddr + AC_ID_PORT) == 0xff) + if (!request_region(ioaddr, AC_IO_EXTENT, "ac3200")) return -ENODEV; - if (inl(ioaddr + AC_ID_PORT) != AC_EISA_ID) - return -ENODEV; + if (inb_p(ioaddr + AC_ID_PORT) == 0xff) { + retval = -ENODEV; + goto out; + } + if (inl(ioaddr + AC_ID_PORT) != AC_EISA_ID) { + retval = -ENODEV; + goto out; + } #ifndef final_version printk(KERN_DEBUG "AC3200 ethercard configuration register is %#02x," @@ -132,15 +138,6 @@ inb(ioaddr + AC_ID_PORT + 2), inb(ioaddr + AC_ID_PORT + 3)); #endif - /* We should have a "dev" from Space.c or the static module table. */ - if (dev == NULL) { - printk("ac3200.c: Passed a NULL device.\n"); - dev = init_etherdev(0, 0); - - if (!dev) - return -ENOMEM; - } - printk("AC3200 in EISA slot %d, node", ioaddr/0x1000); for(i = 0; i < 6; i++) printk(" %02x", dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i)); @@ -151,14 +148,16 @@ || inb(ioaddr + AC_SA_PROM + 1) != AC_ADDR1 || inb(ioaddr + AC_SA_PROM + 2) != AC_ADDR2 ) { printk(", not found (invalid prefix).\n"); - return -ENODEV; + retval = -ENODEV; + goto out; } #endif /* Allocate dev->priv and fill in 8390 specific dev fields. */ if (ethdev_init(dev)) { printk (", unable to allocate memory for dev->priv.\n"); - return -ENOMEM; + retval = -ENOMEM; + goto out; } /* Assign and allocate the interrupt now. */ @@ -172,15 +171,12 @@ if (request_irq(dev->irq, ei_interrupt, 0, "ac3200", dev)) { printk (" nothing! Unable to get IRQ %d.\n", dev->irq); - kfree(dev->priv); - dev->priv = NULL; - return -EAGAIN; + retval = -EAGAIN; + goto out1; } printk(" IRQ %d, %s port\n", dev->irq, port_name[dev->if_port]); - request_region(ioaddr, AC_IO_EXTENT, "ac3200"); - dev->base_addr = ioaddr; #ifdef notyet @@ -210,20 +206,16 @@ printk(KERN_CRIT "ac3200.c: Use EISA SCU to set card memory below 1MB,\n"); printk(KERN_CRIT "ac3200.c: or to an address above 0x%lx.\n", virt_to_bus(high_memory)); printk(KERN_CRIT "ac3200.c: Driver NOT installed.\n"); - free_irq(dev->irq, dev); - kfree(dev->priv); - dev->priv = NULL; - return -EINVAL; + retval = -EINVAL; + goto out2; } dev->mem_start = (unsigned long)ioremap(dev->mem_start, AC_STOP_PG*0x100); if (dev->mem_start == 0) { printk(KERN_ERR "ac3200.c: Unable to remap card memory above 1MB !!\n"); printk(KERN_ERR "ac3200.c: Try using EISA SCU to set memory below 1MB.\n"); printk(KERN_ERR "ac3200.c: Driver NOT installed.\n"); - free_irq(dev->irq, dev); - kfree(dev->priv); - dev->priv = NULL; - return -EAGAIN; + retval = -EINVAL; + goto out2; } ei_status.reg0 = 1; /* Use as remap flag */ printk("ac3200.c: remapped %dkB card memory to virtual address %#lx\n", @@ -252,6 +244,14 @@ dev->stop = &ac_close_card; NS8390_init(dev, 0); return 0; +out2: + free_irq(dev->irq, dev); +out1: + kfree(dev->priv); + dev->priv = NULL; +out: + release_region(ioaddr, AC_IO_EXTENT); + return retval; } static int ac_open(struct net_device *dev) @@ -353,15 +353,15 @@ }, }; -static int io[MAX_AC32_CARDS] = { 0, }; -static int irq[MAX_AC32_CARDS] = { 0, }; -static int mem[MAX_AC32_CARDS] = { 0, }; +static int io[MAX_AC32_CARDS]; +static int irq[MAX_AC32_CARDS]; +static int mem[MAX_AC32_CARDS]; + MODULE_PARM(io, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i"); MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i"); MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i"); -int -init_module(void) +static int ac3200_init(void) { int this_dev, found = 0; @@ -389,8 +389,7 @@ return 0; } -void -cleanup_module(void) +static void ac3200_cleanup(void) { int this_dev; @@ -409,6 +408,10 @@ } unload_8390_module(); } + +module_init(ac3200_init); +module_exit(ac3200_cleanup); + #endif /* MODULE */ /* --PNTmBPCT7hxwcZjr Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patch-ni52 diff -urN /mnt/disk/linux/drivers/net/ni52.c /linux/drivers/net/ni52.c --- /mnt/disk/linux/drivers/net/ni52.c Fri Oct 20 22:03:22 2000 +++ /linux/drivers/net/ni52.c Sun Oct 22 18:47:00 2000 @@ -362,11 +362,9 @@ #endif int base_addr = dev->base_addr; - if (base_addr > 0x1ff) { /* Check a single specified location. */ - if( (inb(base_addr+NI52_MAGIC1) == NI52_MAGICVAL1) && - (inb(base_addr+NI52_MAGIC2) == NI52_MAGICVAL2)) - return ni52_probe1(dev, base_addr); - } else if (base_addr > 0) /* Don't probe at all. */ + if (base_addr > 0x1ff) /* Check a single specified location. */ + return ni52_probe1(dev, base_addr); + else if (base_addr > 0) /* Don't probe at all. */ return -ENXIO; #ifdef MODULE @@ -374,29 +372,15 @@ #else for (port = ports; *port; port++) { int ioaddr = *port; - if (check_region(ioaddr, NI52_TOTAL_SIZE)) - continue; - if( !(inb(ioaddr+NI52_MAGIC1) == NI52_MAGICVAL1) || - !(inb(ioaddr+NI52_MAGIC2) == NI52_MAGICVAL2)) - continue; - dev->base_addr = ioaddr; if (ni52_probe1(dev, ioaddr) == 0) return 0; } #ifdef FULL_IO_PROBE - for(dev->base_addr=0x200;dev->base_addr<0x400;dev->base_addr+=8) - { - int ioaddr = dev->base_addr; - if (check_region(ioaddr, NI52_TOTAL_SIZE)) - continue; - if( !(inb(ioaddr+NI52_MAGIC1) == NI52_MAGICVAL1) || - !(inb(ioaddr+NI52_MAGIC2) == NI52_MAGICVAL2)) - continue; - if (ni52_probe1(dev, ioaddr) == 0) + for(dev->base_addr=0x200; dev->base_addr<0x400; dev->base_addr+=8) + if (ni52_probe1(dev, dev->base_addr) == 0) return 0; - } #endif #endif @@ -407,33 +391,42 @@ static int __init ni52_probe1(struct net_device *dev,int ioaddr) { - int i,size; + int i, size, retval; + + if (!request_region(ioaddr, NI52_TOTAL_SIZE, "ni5210")) + return -ENODEV; + + if( !(inb(ioaddr+NI52_MAGIC1) == NI52_MAGICVAL1) || + !(inb(ioaddr+NI52_MAGIC2) == NI52_MAGICVAL2)) { + retval = -ENODEV; + goto out; + } for(i=0;idev_addr[i] = inb(dev->base_addr+i); if(dev->dev_addr[0] != NI52_ADDR0 || dev->dev_addr[1] != NI52_ADDR1 - || dev->dev_addr[2] != NI52_ADDR2) - return -ENODEV; + || dev->dev_addr[2] != NI52_ADDR2) { + retval = -ENODEV; + goto out; + } printk("%s: NI5210 found at %#3lx, ",dev->name,dev->base_addr); - request_region(ioaddr,NI52_TOTAL_SIZE,"ni5210"); - /* * check (or search) IO-Memory, 8K and 16K */ #ifdef MODULE size = dev->mem_end - dev->mem_start; - if(size != 0x2000 && size != 0x4000) - { + if(size != 0x2000 && size != 0x4000) { printk("\n%s: Illegal memory size %d. Allowed is 0x2000 or 0x4000 bytes.\n",dev->name,size); - return -ENODEV; + retval = -ENODEV; + goto out; } - if(!check586(dev,(char *) dev->mem_start,size)) - { + if(!check586(dev,(char *) dev->mem_start,size)) { printk("?memcheck, Can't find memory at 0x%lx with size %d!\n",dev->mem_start,size); - return -ENODEV; + retval = -ENODEV; + goto out; } #else if(dev->mem_start != 0) /* no auto-mem-probe */ @@ -443,7 +436,8 @@ size = 0x2000; /* check for 8K mem */ if(!check586(dev,(char *) dev->mem_start,size)) { printk("?memprobe, Can't find memory at 0x%lx!\n",dev->mem_start); - return -ENODEV; + retval = -ENODEV; + goto out; } } } @@ -455,7 +449,8 @@ { if(!memaddrs[i]) { printk("?memprobe, Can't find io-memory!\n"); - return -ENODEV; + retval = -ENODEV; + goto out; } dev->mem_start = memaddrs[i]; size = 0x2000; /* check for 8K mem */ @@ -470,10 +465,10 @@ #endif dev->priv = (void *) kmalloc(sizeof(struct priv),GFP_KERNEL); - if(dev->priv == NULL) - { + if(dev->priv == NULL) { printk("%s: Ooops .. can't allocate private driver memory.\n",dev->name); - return -ENOMEM; + retval = -ENOMEM; + goto out; } /* warning: we don't free it on errors */ memset((char *) dev->priv,0,sizeof(struct priv)); @@ -498,7 +493,10 @@ if(!(dev->irq = autoirq_report(2))) { printk("?autoirq, Failed to detect IRQ line!\n"); - return 1; + kfree(dev->priv); + dev->priv = NULL; + retval = -EAGAIN; + goto out; } printk("IRQ %d (autodetected).\n",dev->irq); } @@ -521,6 +519,9 @@ ether_setup(dev); return 0; +out: + release_region(ioaddr, NI52_TOTAL_SIZE); + return retval; } /********************************************** @@ -1294,7 +1295,7 @@ MODULE_PARM(memstart, "l"); MODULE_PARM(memend, "l"); -int init_module(void) +static int ni52_init(void) { if(io <= 0x0 || !memend || !memstart || irq < 2) { printk("ni52: Autoprobing not allowed for modules.\nni52: Set symbols 'io' 'irq' 'memstart' and 'memend'\n"); @@ -1309,13 +1310,17 @@ return 0; } -void cleanup_module(void) +static void ni52_cleanup(void) { release_region(dev_ni52.base_addr, NI52_TOTAL_SIZE); unregister_netdev(&dev_ni52); kfree(dev_ni52.priv); dev_ni52.priv = NULL; } + +module_init(ni52_init); +module_exit(ni52_cleanup); + #endif /* MODULE */ #if 0 --PNTmBPCT7hxwcZjr-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/