public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] More network pci_enable cleanups.
@ 2001-02-11  2:56 davej
  2001-02-11  3:54 ` Jeff Garzik
  0 siblings, 1 reply; 5+ messages in thread
From: davej @ 2001-02-11  2:56 UTC (permalink / raw)
  To: Alan Cox; +Cc: Linux Kernel Mailing List, Jeff Garzik


Hey Alan/Jeff,
 Here are the remaining network driver fixups for pci_enable_device()
(Except starfire, which Jeff has a newer driver for which already has
this fix).

regards.

Dave.

-- 
| Dave Jones.        http://www.suse.de/~davej
| SuSE Labs

diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/defxx.c linux-dj/drivers/net/defxx.c
--- linux/drivers/net/defxx.c	Sat Feb 10 02:49:43 2001
+++ linux-dj/drivers/net/defxx.c	Sat Feb 10 03:05:03 2001
@@ -196,6 +196,7 @@
  *		Jul 2000	tjeerd		Much cleanup and some bug fixes
  *		Sep 2000	tjeerd		Fix leak on unload, cosmetic code cleanup
  *		Feb 2001			Skb allocation fixes
+ *		Feb 2001	davej		PCI enable cleanups.
  */

 /* Include files */
@@ -414,6 +415,7 @@
 	struct net_device *dev;
 	DFX_board_t	  *bp;			/* board pointer */
 	static int version_disp;
+	int err;

 	if (!version_disp)					/* display version info if adapter is found */
 	{
@@ -429,8 +431,8 @@

 	/* Enable PCI device. */
 	if (pdev != NULL) {
-		if (pci_enable_device (pdev))
-			goto err_out;
+		err = pci_enable_device (pdev);
+		if (err) return err;
 		ioaddr = pci_resource_start (pdev, 1);
 	}

diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/dgrs.c linux-dj/drivers/net/dgrs.c
--- linux/drivers/net/dgrs.c	Sat Feb 10 02:49:43 2001
+++ linux-dj/drivers/net/dgrs.c	Sat Feb 10 03:05:09 2001
@@ -78,6 +78,9 @@
  *	one of the devices can't be allocated. Fix SET_MODULE_OWNER
  *	on the loop to use devN instead of repeated calls to dev.
  *
+ *	davej <davej@suse.de> - 9/2/2001
+ *	- Enable PCI device before reading ioaddr/irq
+ *
  */

 static char *version = "$Id: dgrs.c,v 1.13 2000/06/06 04:07:00 rick Exp $";
@@ -1352,7 +1355,7 @@

 static int __init  dgrs_scan(void)
 {
-	int	cards_found = 0;
+	int	cards_found;
 	uint	io;
 	uint	mem;
 	uint	irq;
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/eepro.c linux-dj/drivers/net/eepro.c
--- linux/drivers/net/eepro.c	Sat Feb 10 02:49:43 2001
+++ linux-dj/drivers/net/eepro.c	Sat Feb 10 03:05:05 2001
@@ -1098,7 +1098,7 @@
 	printk (KERN_ERR "%s: transmit timed out, %s?\n", dev->name,
 		"network cable problem");
 	/* This is not a duplicate. One message for the console,
-	   one for the the log file  */
+	   one for the log file  */
 	printk (KERN_DEBUG "%s: transmit timed out, %s?\n", dev->name,
 		"network cable problem");
 	eepro_complete_selreset(ioaddr);
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/eepro100.c linux-dj/drivers/net/eepro100.c
--- linux/drivers/net/eepro100.c	Sat Feb 10 02:49:43 2001
+++ linux-dj/drivers/net/eepro100.c	Sat Feb 10 03:05:06 2001
@@ -25,6 +25,8 @@
 		Disabled FC and ER, to avoid lockups when when we get FCP interrupts.
 	2000 Jul 17 Goutham Rao <goutham.rao@intel.com>
 		PCI DMA API fixes, adding pci_dma_sync_single calls where neccesary
+	2000 Feb 9 Dave Jones <davej@suse.de>
+		PCI enable cleanups
 */

 static const char *version =
@@ -550,10 +552,10 @@
 {
 	unsigned long ioaddr;
 	int irq, i;
-	int acpi_idle_state = 0, pm;
-	static int cards_found /* = 0 */;
+	int acpi_idle_state, pm;
+	static int cards_found;
+	static int did_version;		/* Already printed version info. */

-	static int did_version /* = 0 */;		/* Already printed version info. */
 	if (speedo_debug > 0  &&  did_version++ == 0)
 		printk(version);

diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/macsonic.c linux-dj/drivers/net/macsonic.c
--- linux/drivers/net/macsonic.c	Sat Feb 10 02:49:44 2001
+++ linux-dj/drivers/net/macsonic.c	Sat Feb 10 03:05:07 2001
@@ -135,7 +135,7 @@
 		unsigned long desc_base, desc_top;
 		if ((lp->sonic_desc =
 		     kmalloc(SIZEOF_SONIC_DESC
-			     * SONIC_BUS_SCALE(lp->dma_bitmode), GFP_DMA)) == NULL) {
+			     * SONIC_BUS_SCALE(lp->dma_bitmode), GFP_KERNEL | GFP_DMA)) == NULL) {
 			printk(KERN_ERR "%s: couldn't allocate descriptor buffers\n", dev->name);
 		}
 		desc_base = (unsigned long) lp->sonic_desc;
@@ -165,7 +165,7 @@

 	/* FIXME, maybe we should use skbs */
 	if ((lp->rba = (char *)
-	     kmalloc(SONIC_NUM_RRS * SONIC_RBSIZE, GFP_DMA)) == NULL) {
+	     kmalloc(SONIC_NUM_RRS * SONIC_RBSIZE, GFP_KERNEL | GFP_DMA)) == NULL) {
 		printk(KERN_ERR "%s: couldn't allocate receive buffers\n", dev->name);
 		kfree(lp->sonic_desc);
 		lp->sonic_desc = NULL;
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/natsemi.c linux-dj/drivers/net/natsemi.c
--- linux/drivers/net/natsemi.c	Sat Feb 10 02:49:44 2001
+++ linux-dj/drivers/net/natsemi.c	Sat Feb 10 03:05:04 2001
@@ -31,6 +31,7 @@
 		- Call netif_start_queue from dev->tx_timeout
 		- wmb() in start_tx() to flush data
 		- Update Tx locking
+		- Clean up PCI enable (davej)

 */

@@ -378,8 +379,8 @@
 		printk(KERN_INFO "%s" KERN_INFO "%s" KERN_INFO "%s",
 			version1, version2, version3);

-	if (pci_enable_device(pdev))
-		return -EIO;
+	i = pci_enable_device(pdev);
+	if (i) return i;

 	find_cnt++;
 	option = find_cnt < MAX_UNITS ? options[find_cnt] : 0;
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/ncr885e.c linux-dj/drivers/net/ncr885e.c
--- linux/drivers/net/ncr885e.c	Sat Feb 10 02:49:44 2001
+++ linux-dj/drivers/net/ncr885e.c	Sat Feb 10 03:05:05 2001
@@ -1163,7 +1163,7 @@
 }

 /*  Since the NCR 53C885 is a multi-function chip, I'm not worrying about
- *  trying to get the the device(s) in slot order.  For our (Synergy's)
+ *  trying to get the device(s) in slot order.  For our (Synergy's)
  *  purpose, there's just a single 53C885 on the board and we don't
  *  worry about the rest.
  */
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/pcnet32.c linux-dj/drivers/net/pcnet32.c
--- linux/drivers/net/pcnet32.c	Sat Feb 10 02:49:45 2001
+++ linux-dj/drivers/net/pcnet32.c	Sat Feb 10 03:05:09 2001
@@ -478,10 +478,17 @@
 {
     static int card_idx;
     long ioaddr;
-    int err = 0;
+    int err;

     printk(KERN_INFO "pcnet32_probe_pci: found device %#08x.%#08x\n", ent->vendor, ent->device);

+    if ((err = pci_enable_device(pdev)) < 0) {
+	printk(KERN_ERR "pcnet32.c: failed to enable device -- err=%d\n", err);
+	return err;
+    }
+
+    pci_set_master(pdev);
+
     ioaddr = pci_resource_start (pdev, 0);
     printk(KERN_INFO "    ioaddr=%#08lx  resource_flags=%#08lx\n", ioaddr, pci_resource_flags (pdev, 0));
     if (!ioaddr) {
@@ -494,13 +501,7 @@
 	return -ENODEV;
     }

-    if ((err = pci_enable_device(pdev)) < 0) {
-	printk(KERN_ERR "pcnet32.c: failed to enable device -- err=%d\n", err);
-	return err;
-    }
-
-    pci_set_master(pdev);
-
+
     return pcnet32_probe1(ioaddr, pdev->irq, 1, card_idx, pdev);
 }

diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/sis900.c linux-dj/drivers/net/sis900.c
--- linux/drivers/net/sis900.c	Sat Feb 10 02:49:45 2001
+++ linux-dj/drivers/net/sis900.c	Sat Feb 10 03:05:06 2001
@@ -18,6 +18,7 @@
    preliminary Rev. 1.0 Jan. 18, 1998
    http://www.sis.com.tw/support/databook.htm

+   Rev 1.07.09 Feb.  9 2001 Dave Jones <davej@suse.de> PCI enable cleanup
    Rev 1.07.08 Jan.  8 2001 Lei-Chun Chang added RTL8201 PHY support
    Rev 1.07.07 Nov. 29 2000 Lei-Chun Chang added kernel-doc extractable documentation and 630 workaround fix
    Rev 1.07.06 Nov.  7 2000 Jeff Garzik <jgarzik@mandrakesoft.com> some bug fix and cleaning
@@ -60,7 +61,7 @@
 #include "sis900.h"

 static const char *version =
-"sis900.c: v1.07.08  1/8/2001\n";
+"sis900.c: v1.07.09  2/9/2001\n";

 static int max_interrupt_work = 20;
 static int multicast_filter_limit = 128;
@@ -255,7 +256,7 @@
 	long ioaddr;
 	struct net_device *net_dev;
 	int irq;
-	int i, ret = 0;
+	int i, ret;
 	u8 revision;
 	char *card_name = card_names[pci_id->driver_data];

@@ -266,8 +267,9 @@
 	}

 	/* setup various bits in PCI command register */
-	if (pci_enable_device (pci_dev))
-		return -ENODEV;
+	ret = pci_enable_device (pci_dev);
+	if (ret) return ret;
+
 	pci_set_master(pci_dev);

 	irq = pci_dev->irq;
diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/winbond-840.c linux-dj/drivers/net/winbond-840.c
--- linux/drivers/net/winbond-840.c	Sat Feb 10 02:49:47 2001
+++ linux-dj/drivers/net/winbond-840.c	Sat Feb 10 03:05:11 2001
@@ -381,8 +381,9 @@
 	int i, option = find_cnt < MAX_UNITS ? options[find_cnt] : 0;
 	long ioaddr;

-	if (pci_enable_device(pdev))
-		return -EIO;
+	i = pci_enable_device(pdev);
+	if (i) return i;
+
 	pci_set_master(pdev);

 	irq = pdev->irq;

-
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/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] More network pci_enable cleanups.
  2001-02-11  2:56 [PATCH] More network pci_enable cleanups davej
@ 2001-02-11  3:54 ` Jeff Garzik
  2001-02-11 12:02   ` davej
  0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2001-02-11  3:54 UTC (permalink / raw)
  To: davej; +Cc: Alan Cox, Linux Kernel Mailing List

davej@suse.de wrote:
> diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/defxx.c linux-dj/drivers/net/defxx.c
> --- linux/drivers/net/defxx.c   Sat Feb 10 02:49:43 2001
> +++ linux-dj/drivers/net/defxx.c        Sat Feb 10 03:05:03 2001
> @@ -414,6 +415,7 @@
>         struct net_device *dev;
>         DFX_board_t       *bp;                  /* board pointer */
>         static int version_disp;
> +       int err;
> 
>         if (!version_disp)                                      /* display version info if adapter is found */
>         {
> @@ -429,8 +431,8 @@
> 
>         /* Enable PCI device. */
>         if (pdev != NULL) {
> -               if (pci_enable_device (pdev))
> -                       goto err_out;
> +               err = pci_enable_device (pdev);
> +               if (err) return err;
>                 ioaddr = pci_resource_start (pdev, 1);
>         }

1) Bug: Introduced memory leak by replacing "goto err_out" with "return
err"

2) Sole usage of 'err' -- it should be scoped inside the pdev!=NULL
check.


> diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/dgrs.c linux-dj/drivers/net/dgrs.c
> --- linux/drivers/net/dgrs.c    Sat Feb 10 02:49:43 2001
> +++ linux-dj/drivers/net/dgrs.c Sat Feb 10 03:05:09 2001
> @@ -1352,7 +1355,7 @@
> 
>  static int __init  dgrs_scan(void)
>  {
> -       int     cards_found = 0;
> +       int     cards_found;
>         uint    io;
>         uint    mem;
>         uint    irq;

Rejected.  Introduces bug.  That zero is required!


> diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/eepro.c linux-dj/drivers/net/eepro.c
> --- linux/drivers/net/eepro.c   Sat Feb 10 02:49:43 2001
> +++ linux-dj/drivers/net/eepro.c        Sat Feb 10 03:05:05 2001
> @@ -1098,7 +1098,7 @@
>         printk (KERN_ERR "%s: transmit timed out, %s?\n", dev->name,
>                 "network cable problem");
>         /* This is not a duplicate. One message for the console,
> -          one for the the log file  */
> +          one for the log file  */
>         printk (KERN_DEBUG "%s: transmit timed out, %s?\n", dev->name,
>                 "network cable problem");
>         eepro_complete_selreset(ioaddr);

rejected -- already in AC patches (and merged into my tree as well)

> diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/eepro100.c linux-dj/drivers/net/eepro100.c
> --- linux/drivers/net/eepro100.c        Sat Feb 10 02:49:43 2001
> +++ linux-dj/drivers/net/eepro100.c     Sat Feb 10 03:05:06 2001
> @@ -550,10 +552,10 @@
>  {
>         unsigned long ioaddr;
>         int irq, i;
> -       int acpi_idle_state = 0, pm;
> -       static int cards_found /* = 0 */;
> +       int acpi_idle_state, pm;
> +       static int cards_found;
> +       static int did_version;         /* Already printed version info. */
> 
> -       static int did_version /* = 0 */;               /* Already printed version info. */
>         if (speedo_debug > 0  &&  did_version++ == 0)
>                 printk(version);
> 

Rejected.  The maintainer clearly wanted the "/* = 0 */" present, yet
you remove them.  I'm suspicious of the acpi_idle_state initialization
removal as well, but can't check it quickly at present (acpi_idle_state
is gone in my tree)

> diff -urN --exclude-from=/home/davej/.exclude linux/drivers/net/ncr885e.c linux-dj/drivers/net/ncr885e.c
> --- linux/drivers/net/ncr885e.c Sat Feb 10 02:49:44 2001
> +++ linux-dj/drivers/net/ncr885e.c      Sat Feb 10 03:05:05 2001
> @@ -1163,7 +1163,7 @@
>  }
> 
>  /*  Since the NCR 53C885 is a multi-function chip, I'm not worrying about
> - *  trying to get the the device(s) in slot order.  For our (Synergy's)
> + *  trying to get the device(s) in slot order.  For our (Synergy's)
>   *  purpose, there's just a single 53C885 on the board and we don't
>   *  worry about the rest.
>   */

rejected -- already in AC and my own patches

All the rest were applied.

	Jeff



-- 
Jeff Garzik       | "You see, in this world there's two kinds of
Building 1024     |  people, my friend: Those with loaded guns
MandrakeSoft      |  and those who dig. You dig."  --Blondie
-
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/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] More network pci_enable cleanups.
  2001-02-11 12:12     ` Jeff Garzik
@ 2001-02-11 11:12       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2001-02-11 11:12 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: davej, Alan Cox, Linux Kernel Mailing List

Em Sun, Feb 11, 2001 at 07:12:15AM -0500, Jeff Garzik escreveu:
> davej@suse.de wrote:
> > > > -       int     cards_found = 0;
> > > > +       int     cards_found;
> > > Rejected.  Introduces bug.  That zero is required!
> > 
> > Refresh my memory here. I thought unitialised vars go to bss,
> > and get zeroed at boot time ?
> 
> cards_found is on the stack, which can contain random crap..

Dave, only static/globals goes to the bss and are thus zeroed, the locals
are in the stack, like Jeff said

- Arnaldo
-
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/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] More network pci_enable cleanups.
  2001-02-11  3:54 ` Jeff Garzik
@ 2001-02-11 12:02   ` davej
  2001-02-11 12:12     ` Jeff Garzik
  0 siblings, 1 reply; 5+ messages in thread
From: davej @ 2001-02-11 12:02 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Alan Cox, Linux Kernel Mailing List

On Sat, 10 Feb 2001, Jeff Garzik wrote:

> 1) Bug: Introduced memory leak by replacing "goto err_out" with "return
> err"
> 2) Sole usage of 'err' -- it should be scoped inside the pdev!=NULL
> check.

Will fix up later.

> > -       int     cards_found = 0;
> > +       int     cards_found;
> Rejected.  Introduces bug.  That zero is required!

Refresh my memory here. I thought unitialised vars go to bss,
and get zeroed at boot time ?

> rejected -- already in AC patches (and merged into my tree as well)

Odd, I diffed against the latest AC patch.

> Rejected.  The maintainer clearly wanted the "/* = 0 */" present, yet
> you remove them.  I'm suspicious of the acpi_idle_state initialization
> removal as well, but can't check it quickly at present (acpi_idle_state
> is gone in my tree)

Ok, I'll assume you've got the pci_enable stuff already cleaned there.

> All the rest were applied.

Great :) Thanks Jeff..

regards,

Dave.

-- 
| Dave Jones.        http://www.suse.de/~davej
| SuSE Labs

-
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/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] More network pci_enable cleanups.
  2001-02-11 12:02   ` davej
@ 2001-02-11 12:12     ` Jeff Garzik
  2001-02-11 11:12       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2001-02-11 12:12 UTC (permalink / raw)
  To: davej; +Cc: Alan Cox, Linux Kernel Mailing List

davej@suse.de wrote:
> > > -       int     cards_found = 0;
> > > +       int     cards_found;
> > Rejected.  Introduces bug.  That zero is required!
> 
> Refresh my memory here. I thought unitialised vars go to bss,
> and get zeroed at boot time ?

cards_found is on the stack, which can contain random crap..

	Jeff


-- 
Jeff Garzik       | "You see, in this world there's two kinds of
Building 1024     |  people, my friend: Those with loaded guns
MandrakeSoft      |  and those who dig. You dig."  --Blondie
-
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/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2001-02-11 12:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-02-11  2:56 [PATCH] More network pci_enable cleanups davej
2001-02-11  3:54 ` Jeff Garzik
2001-02-11 12:02   ` davej
2001-02-11 12:12     ` Jeff Garzik
2001-02-11 11:12       ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox