2004-04-16 21:24:41

by Dave Jones

[permalink] [raw]
Subject: rcpci45 dereference fix.

--- linux-2.6.5/drivers/net/rcpci45.c~ 2004-04-16 22:22:22.000000000 +0100
+++ linux-2.6.5/drivers/net/rcpci45.c 2004-04-16 22:23:01.000000000 +0100
@@ -129,13 +129,14 @@
rcpci45_remove_one (struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata (pdev);
- PDPA pDpa = dev->priv;
+ PDPA pDpa;

if (!dev) {
printk (KERN_ERR "%s: remove non-existent device\n",
dev->name);
return;
}
+ pDpa = dev->priv;

RCResetIOP (dev);
unregister_netdev (dev);


2004-04-16 21:53:05

by Dave Jones

[permalink] [raw]
Subject: Re: rcpci45 dereference fix.

On Fri, Apr 16, 2004 at 10:45:06PM +0200, Francois Romieu wrote:

> rcpci45_init_one() must succeed in order for rcpci45_remove_one() to be
> issued.
>
> If rcpci45_init_one() succeeds, dev can not be NULL.
>
> So I'd rather see the "if (!dev) {" test removed instead of this change.

Sure.

Dave

--- drivers/net/rcpci45.c~ 2004-04-16 22:22:22.000000000 +0100
+++ drivers/net/rcpci45.c 2004-04-16 22:49:54.000000000 +0100
@@ -131,12 +131,6 @@
struct net_device *dev = pci_get_drvdata (pdev);
PDPA pDpa = dev->priv;

- if (!dev) {
- printk (KERN_ERR "%s: remove non-existent device\n",
- dev->name);
- return;
- }
-
RCResetIOP (dev);
unregister_netdev (dev);
free_irq (dev->irq, dev);

2004-04-16 22:38:35

by Francois Romieu

[permalink] [raw]
Subject: Re: rcpci45 dereference fix.

Dave Jones <[email protected]> :
> --- linux-2.6.5/drivers/net/rcpci45.c~ 2004-04-16 22:22:22.000000000 +0100
> +++ linux-2.6.5/drivers/net/rcpci45.c 2004-04-16 22:23:01.000000000 +0100
> @@ -129,13 +129,14 @@
> rcpci45_remove_one (struct pci_dev *pdev)
> {
> struct net_device *dev = pci_get_drvdata (pdev);
> - PDPA pDpa = dev->priv;
> + PDPA pDpa;
>
> if (!dev) {
> printk (KERN_ERR "%s: remove non-existent device\n",
> dev->name);
> return;
> }
> + pDpa = dev->priv;
>
> RCResetIOP (dev);
> unregister_netdev (dev);

rcpci45_init_one() must succeed in order for rcpci45_remove_one() to be
issued.

If rcpci45_init_one() succeeds, dev can not be NULL.

So I'd rather see the "if (!dev) {" test removed instead of this change.

--
Ueimor

2004-04-19 16:43:05

by Jeff Garzik

[permalink] [raw]
Subject: Re: rcpci45 dereference fix.

Dave Jones wrote:
> On Fri, Apr 16, 2004 at 10:45:06PM +0200, Francois Romieu wrote:
>
> > rcpci45_init_one() must succeed in order for rcpci45_remove_one() to be
> > issued.
> >
> > If rcpci45_init_one() succeeds, dev can not be NULL.
> >
> > So I'd rather see the "if (!dev) {" test removed instead of this change.
>
> Sure.
>
> Dave
>
> --- drivers/net/rcpci45.c~ 2004-04-16 22:22:22.000000000 +0100
> +++ drivers/net/rcpci45.c 2004-04-16 22:49:54.000000000 +0100
> @@ -131,12 +131,6 @@
> struct net_device *dev = pci_get_drvdata (pdev);
> PDPA pDpa = dev->priv;
>
> - if (!dev) {
> - printk (KERN_ERR "%s: remove non-existent device\n",
> - dev->name);
> - return;
> - }
> -


Manually applied, since it's not in standard "patch -sp1" format.

Jeff