2011-03-06 07:08:35

by j223yang

[permalink] [raw]
Subject: [Patch] ariadne: fix possible null dereference

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<[email protected]>
---
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 */


2011-03-06 19:11:45

by Randy Dunlap

[permalink] [raw]
Subject: Re: [Patch] ariadne: fix possible null dereference

On Sun, 6 Mar 2011 02:08:32 -0500 [email protected] 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 <[email protected]>

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<[email protected]>
> ---
> 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 ***

2011-03-06 20:00:18

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [Patch] ariadne: fix possible null dereference

On Sun, Mar 6, 2011 at 20:11, Randy Dunlap <[email protected]> wrote:
> On Sun, 6 Mar 2011 02:08:32 -0500 [email protected] 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 <[email protected]>

Acked-by: Geert Uytterhoeven <[email protected]>

>> ------------------------------------------------------
>> 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<[email protected]>
>> ---
>>  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 -- [email protected]

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

2011-03-07 02:07:22

by David Miller

[permalink] [raw]
Subject: Re: [Patch] ariadne: fix possible null dereference

From: Geert Uytterhoeven <[email protected]>
Date: Sun, 6 Mar 2011 21:00:13 +0100

> On Sun, Mar 6, 2011 at 20:11, Randy Dunlap <[email protected]> wrote:
>> On Sun, 6 Mar 2011 02:08:32 -0500 [email protected] 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 <[email protected]>
>
> Acked-by: Geert Uytterhoeven <[email protected]>

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.