Patchwork au1000_eth: possible NULL dereference of aup->mii_bus->irq in au1000_probe()

login
register
mail settings
Submitter roel kluin
Date Aug. 31, 2009, 8:40 a.m.
Message ID <4A9B8C6F.3040503@gmail.com>
Download mbox | patch
Permalink /patch/32614/
State Accepted
Delegated to: David Miller
Headers show

Comments

roel kluin - Aug. 31, 2009, 8:40 a.m.
aup->mii_bus->irq allocation may fail, prevent a dereference of NULL.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
--
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
Florian Fainelli - Aug. 31, 2009, 12:38 p.m.
Hello Roel,

Le lundi 31 août 2009 10:40:15, Roel Kluin a écrit :
> aup->mii_bus->irq allocation may fail, prevent a dereference of NULL.

Good catch.

>
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>

Acked-by: Florian Fainelli <florian@openwrt.org>

> ---
> diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
> index d3c734f..02e4be0 100644
> --- a/drivers/net/au1000_eth.c
> +++ b/drivers/net/au1000_eth.c
> @@ -1157,6 +1157,9 @@ static struct net_device * au1000_probe(int port_num)
>  	aup->mii_bus->name = "au1000_eth_mii";
>  	snprintf(aup->mii_bus->id, MII_BUS_ID_SIZE, "%x", aup->mac_id);
>  	aup->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
> +	if (aup->mii_bus->irq == NULL)
> +		goto err_out;
> +
>  	for(i = 0; i < PHY_MAX_ADDR; ++i)
>  		aup->mii_bus->irq[i] = PHY_POLL;
>
> --
> 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 - Sept. 2, 2009, 12:45 a.m.
From: Florian Fainelli <f.fainelli@gmail.com>
Date: Mon, 31 Aug 2009 14:38:55 +0200

> Hello Roel,
> 
> Le lundi 31 août 2009 10:40:15, Roel Kluin a écrit :
>> aup->mii_bus->irq allocation may fail, prevent a dereference of NULL.
> 
> Good catch.
> 
>>
>> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> 
> Acked-by: Florian Fainelli <florian@openwrt.org>

Applied.
--
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

Patch

diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
index d3c734f..02e4be0 100644
--- a/drivers/net/au1000_eth.c
+++ b/drivers/net/au1000_eth.c
@@ -1157,6 +1157,9 @@  static struct net_device * au1000_probe(int port_num)
 	aup->mii_bus->name = "au1000_eth_mii";
 	snprintf(aup->mii_bus->id, MII_BUS_ID_SIZE, "%x", aup->mac_id);
 	aup->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
+	if (aup->mii_bus->irq == NULL)
+		goto err_out;
+
 	for(i = 0; i < PHY_MAX_ADDR; ++i)
 		aup->mii_bus->irq[i] = PHY_POLL;