diff mbox

ariadne: fix possible null dereference

Message ID 20110306070832.GA26188@asset.uwaterloo.ca
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

j223yang@asset.uwaterloo.ca March 6, 2011, 7:08 a.m. UTC
Hi Randy,
I have tested my patch, and it is ok now.
Could you please try patching again? Sorry for previous trouble.
Thank you!
 
Jinqiu
------------------------------------------------------
This patch fixes bugzilla #13853:
https://bugzilla.kernel.org/show_bug.cgi?id=13853

The patch removes dereference of 'dev' after testing for NULL.

Signed-off-by: Jinqiu Yang<crindy646@gmail.com>
---
 ariadne.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Randy.Dunlap March 6, 2011, 7:11 p.m. UTC | #1
On Sun, 6 Mar 2011 02:08:32 -0500 j223yang@asset.uwaterloo.ca wrote:

> Hi Randy,
> I have tested my patch, and it is ok now.
> Could you please try patching again? Sorry for previous trouble.
> Thank you!

Acked-by: Randy Dunlap <rdunlap@xenotime.net>

Thanks.

> Jinqiu
> ------------------------------------------------------
> This patch fixes bugzilla #13853:
> https://bugzilla.kernel.org/show_bug.cgi?id=13853
> 
> The patch removes dereference of 'dev' after testing for NULL.
> 
> Signed-off-by: Jinqiu Yang<crindy646@gmail.com>
> ---
>  ariadne.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
> --- a/drivers/net/ariadne.c	2011-03-04 11:16:42.332164362 -0500
> +++ b/drivers/net/ariadne.c	2011-03-05 21:11:52.949164759 -0500
> @@ -420,7 +420,7 @@ static inline void ariadne_reset(struct 
>  static irqreturn_t ariadne_interrupt(int irq, void *data)
>  {
>      struct net_device *dev = (struct net_device *)data;
> -    volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
> +    volatile struct Am79C960 *lance;
>      struct ariadne_private *priv;
>      int csr0, boguscnt;
>      int handled = 0;
> @@ -430,6 +430,7 @@ static irqreturn_t ariadne_interrupt(int
>  	return IRQ_NONE;
>      }
>  
> +    lance = (struct Am79C960 *)dev->base_addr;
>      lance->RAP = CSR0;			/* PCnet-ISA Controller Status */
>  
>      if (!(lance->RDP & INTR))		/* Check if any interrupt has been */


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Geert Uytterhoeven March 6, 2011, 8 p.m. UTC | #2
On Sun, Mar 6, 2011 at 20:11, Randy Dunlap <rdunlap@xenotime.net> wrote:
> On Sun, 6 Mar 2011 02:08:32 -0500 j223yang@asset.uwaterloo.ca wrote:
>
>> Hi Randy,
>> I have tested my patch, and it is ok now.
>> Could you please try patching again? Sorry for previous trouble.
>> Thank you!
>
> Acked-by: Randy Dunlap <rdunlap@xenotime.net>

Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>

>> ------------------------------------------------------
>> This patch fixes bugzilla #13853:
>> https://bugzilla.kernel.org/show_bug.cgi?id=13853
>>
>> The patch removes dereference of 'dev' after testing for NULL.
>>
>> Signed-off-by: Jinqiu Yang<crindy646@gmail.com>
>> ---
>>  ariadne.c |    3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
>> --- a/drivers/net/ariadne.c   2011-03-04 11:16:42.332164362 -0500
>> +++ b/drivers/net/ariadne.c   2011-03-05 21:11:52.949164759 -0500
>> @@ -420,7 +420,7 @@ static inline void ariadne_reset(struct
>>  static irqreturn_t ariadne_interrupt(int irq, void *data)
>>  {
>>      struct net_device *dev = (struct net_device *)data;
>> -    volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
>> +    volatile struct Am79C960 *lance;
>>      struct ariadne_private *priv;
>>      int csr0, boguscnt;
>>      int handled = 0;
>> @@ -430,6 +430,7 @@ static irqreturn_t ariadne_interrupt(int
>>       return IRQ_NONE;
>>      }
>>
>> +    lance = (struct Am79C960 *)dev->base_addr;
>>      lance->RAP = CSR0;                       /* PCnet-ISA Controller Status */
>>
>>      if (!(lance->RDP & INTR))                /* Check if any interrupt has been */

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller March 7, 2011, 2:07 a.m. UTC | #3
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Sun, 6 Mar 2011 21:00:13 +0100

> On Sun, Mar 6, 2011 at 20:11, Randy Dunlap <rdunlap@xenotime.net> wrote:
>> On Sun, 6 Mar 2011 02:08:32 -0500 j223yang@asset.uwaterloo.ca wrote:
>>
>>> Hi Randy,
>>> I have tested my patch, and it is ok now.
>>> Could you please try patching again? Sorry for previous trouble.
>>> Thank you!
>>
>> Acked-by: Randy Dunlap <rdunlap@xenotime.net>
> 
> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>

People really don't actually read patches, I think.

Show me how dev can even be NULL here, it simply can't.

So the correct fix is to remove the dev==NULL check altogether.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
--- a/drivers/net/ariadne.c	2011-03-04 11:16:42.332164362 -0500
+++ b/drivers/net/ariadne.c	2011-03-05 21:11:52.949164759 -0500
@@ -420,7 +420,7 @@  static inline void ariadne_reset(struct 
 static irqreturn_t ariadne_interrupt(int irq, void *data)
 {
     struct net_device *dev = (struct net_device *)data;
-    volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
+    volatile struct Am79C960 *lance;
     struct ariadne_private *priv;
     int csr0, boguscnt;
     int handled = 0;
@@ -430,6 +430,7 @@  static irqreturn_t ariadne_interrupt(int
 	return IRQ_NONE;
     }
 
+    lance = (struct Am79C960 *)dev->base_addr;
     lance->RAP = CSR0;			/* PCnet-ISA Controller Status */
 
     if (!(lance->RDP & INTR))		/* Check if any interrupt has been */