netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] 3c507.c: remove unused NULL pointer check
  2009-12-21 19:23 [PATCH] 3c507.c: remove unused NULL pointer check Alexander Strakh
@ 2009-12-21 16:56 ` Oliver Hartkopp
  2009-12-21 20:31   ` Stephen Hemminger
  0 siblings, 1 reply; 4+ messages in thread
From: Oliver Hartkopp @ 2009-12-21 16:56 UTC (permalink / raw)
  To: Alexander Strakh
  Cc: Bartlomiej Zolnierkiewicz, Donald Becker, netdev, linux-kernel

Alexander Strakh wrote:
> 	In driver drivers/net/3c507.c in function Iirqreturn_t el16_interrupt:
> 1. If in line 555 dev = NULL then we goto line 556
> 2. In line 556 we have null dereference because pr_err called with dev->name 
> in third parameter.
>  555        if (dev == NULL) {
>  556                pr_err("%s: net_interrupt(): irq %d for unknown device.
> \n",
>  557                        dev->name, irq);
>  558                return IRQ_NONE;
>  559        }
> 
> Found by Linux Device Drivers Verification (Svace detector)
> 
> Remove unused NULL pointer check.

You are obviously doing more than that ...

> 
> Signed-off-by: Alexander Strakh <strakh@ispras.ru>
> 
> ---
> diff --git a/./0000/drivers/net/3c507.c b/./moder/drivers/net/3c507.c
> index fbc2311..3bfb3dd 100644
> --- a/./0000/drivers/net/3c507.c
> +++ b/./moder/drivers/net/3c507.c
> @@ -552,12 +552,6 @@ static irqreturn_t el16_interrupt(int irq, void *dev_id)
>  	ushort ack_cmd = 0;
>  	void __iomem *shmem;
>  
> -	if (dev == NULL) {
> -		pr_err("%s: net_interrupt(): irq %d for unknown device.\n",
> -			dev->name, irq);

You are changing real funcionality here!

If you want to fix it, fix the pr_err() but do not remove the "return
IRQ_NONE" entirely.

This looks like an introduction of a bug.

Regards,
Oliver


> -		return IRQ_NONE;
> -	}
> -


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

* [PATCH] 3c507.c: remove unused NULL pointer check
@ 2009-12-21 19:23 Alexander Strakh
  2009-12-21 16:56 ` Oliver Hartkopp
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Strakh @ 2009-12-21 19:23 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz, Donald Becker, netdev, linux-kernel

	In driver drivers/net/3c507.c in function Iirqreturn_t el16_interrupt:
1. If in line 555 dev = NULL then we goto line 556
2. In line 556 we have null dereference because pr_err called with dev->name 
in third parameter.
 555        if (dev == NULL) {
 556                pr_err("%s: net_interrupt(): irq %d for unknown device.
\n",
 557                        dev->name, irq);
 558                return IRQ_NONE;
 559        }

Found by Linux Device Drivers Verification (Svace detector)

Remove unused NULL pointer check.

Signed-off-by: Alexander Strakh <strakh@ispras.ru>

---
diff --git a/./0000/drivers/net/3c507.c b/./moder/drivers/net/3c507.c
index fbc2311..3bfb3dd 100644
--- a/./0000/drivers/net/3c507.c
+++ b/./moder/drivers/net/3c507.c
@@ -552,12 +552,6 @@ static irqreturn_t el16_interrupt(int irq, void *dev_id)
 	ushort ack_cmd = 0;
 	void __iomem *shmem;
 
-	if (dev == NULL) {
-		pr_err("%s: net_interrupt(): irq %d for unknown device.\n",
-			dev->name, irq);
-		return IRQ_NONE;
-	}
-
 	ioaddr = dev->base_addr;
 	lp = netdev_priv(dev);
 	shmem = lp->base;

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

* Re: [PATCH] 3c507.c: remove unused NULL pointer check
  2009-12-21 16:56 ` Oliver Hartkopp
@ 2009-12-21 20:31   ` Stephen Hemminger
  2009-12-21 20:46     ` Oliver Hartkopp
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2009-12-21 20:31 UTC (permalink / raw)
  To: Oliver Hartkopp
  Cc: Alexander Strakh, Bartlomiej Zolnierkiewicz, Donald Becker,
	netdev, linux-kernel

On Mon, 21 Dec 2009 17:56:39 +0100
Oliver Hartkopp <socketcan@hartkopp.net> wrote:

> Alexander Strakh wrote:
> > 	In driver drivers/net/3c507.c in function Iirqreturn_t el16_interrupt:
> > 1. If in line 555 dev = NULL then we goto line 556
> > 2. In line 556 we have null dereference because pr_err called with dev->name 
> > in third parameter.
> >  555        if (dev == NULL) {
> >  556                pr_err("%s: net_interrupt(): irq %d for unknown device.
> > \n",
> >  557                        dev->name, irq);
> >  558                return IRQ_NONE;
> >  559        }
> > 
> > Found by Linux Device Drivers Verification (Svace detector)
> > 
> > Remove unused NULL pointer check.
> 
> You are obviously doing more than that ...
> 
> > 
> > Signed-off-by: Alexander Strakh <strakh@ispras.ru>
> > 
> > ---
> > diff --git a/./0000/drivers/net/3c507.c b/./moder/drivers/net/3c507.c
> > index fbc2311..3bfb3dd 100644
> > --- a/./0000/drivers/net/3c507.c
> > +++ b/./moder/drivers/net/3c507.c
> > @@ -552,12 +552,6 @@ static irqreturn_t el16_interrupt(int irq, void *dev_id)
> >  	ushort ack_cmd = 0;
> >  	void __iomem *shmem;
> >  
> > -	if (dev == NULL) {
> > -		pr_err("%s: net_interrupt(): irq %d for unknown device.\n",
> > -			dev->name, irq);
> 
> You are changing real funcionality here!
> 
> If you want to fix it, fix the pr_err() but do not remove the "return
> IRQ_NONE" entirely.
> 
> This looks like an introduction of a bug.
> 
> Regards,
> Oliver
> 
> 
> > -		return IRQ_NONE;
> > -	}
> > -

Interrupts will never be called with third parameter of NULL. It is really
bogus impossible to reach code.

-- 

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

* Re: [PATCH] 3c507.c: remove unused NULL pointer check
  2009-12-21 20:31   ` Stephen Hemminger
@ 2009-12-21 20:46     ` Oliver Hartkopp
  0 siblings, 0 replies; 4+ messages in thread
From: Oliver Hartkopp @ 2009-12-21 20:46 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: Alexander Strakh, Bartlomiej Zolnierkiewicz, Donald Becker,
	netdev, linux-kernel

Stephen Hemminger wrote:
> On Mon, 21 Dec 2009 17:56:39 +0100
> Oliver Hartkopp <socketcan@hartkopp.net> wrote:
> 
>> Alexander Strakh wrote:
>>> 	In driver drivers/net/3c507.c in function Iirqreturn_t el16_interrupt:
>>> 1. If in line 555 dev = NULL then we goto line 556
>>> 2. In line 556 we have null dereference because pr_err called with dev->name 
>>> in third parameter.
>>>  555        if (dev == NULL) {
>>>  556                pr_err("%s: net_interrupt(): irq %d for unknown device.
>>> \n",
>>>  557                        dev->name, irq);
>>>  558                return IRQ_NONE;
>>>  559        }
>>>
>>> Found by Linux Device Drivers Verification (Svace detector)
>>>
>>> Remove unused NULL pointer check.

> 
> Interrupts will never be called with third parameter of NULL. It is really
> bogus impossible to reach code.
> 

You're right! I just did not verify the direct assignment of dev = dev_id ...

Btw. the description for the reason of this patch remains unsuitably as the
problem is not the potential dereferencing of dev->name in pr_err() here.

It should better be something like this (partly stolen from your answer):

   Interrupts will never be called with dev_id parameter of NULL.
   This patch removes the obsolete, unreachable code.

Regards,
Oliver




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

end of thread, other threads:[~2009-12-21 20:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-21 19:23 [PATCH] 3c507.c: remove unused NULL pointer check Alexander Strakh
2009-12-21 16:56 ` Oliver Hartkopp
2009-12-21 20:31   ` Stephen Hemminger
2009-12-21 20:46     ` Oliver Hartkopp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).