The error check in cpsw_probe_dt() has an '&&' where an '||' is
meant to be. This causes a NULL pointer dereference when incomplet DT
data is passed to the driver ('phy_id' property for cpsw_emac1
missing).
Signed-off-by: Lothar Waßmann <[email protected]>
---
drivers/net/ethernet/ti/cpsw.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 5ceaa4c3..7aebc0c 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -1504,7 +1504,7 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
struct platform_device *mdio;
parp = of_get_property(slave_node, "phy_id", &lenp);
- if ((parp == NULL) && (lenp != (sizeof(void *) * 2))) {
+ if ((parp == NULL) || (lenp != (sizeof(void *) * 2))) {
pr_err("Missing slave[%d] phy_id property\n", i);
ret = -EINVAL;
goto error_ret;
--
1.7.2.5
On 3/21/2013 5:50 PM, Lothar Waßmann wrote:
> The error check in cpsw_probe_dt() has an '&&' where an '||' is
> meant to be. This causes a NULL pointer dereference when incomplet DT
> data is passed to the driver ('phy_id' property for cpsw_emac1
> missing).
>
>
> Signed-off-by: Lothar Waßmann<[email protected]>
Acked-by: Mugunthan V N <[email protected]>
Regards
Mugunthan V N
From: Mugunthan V N <[email protected]>
Date: Thu, 21 Mar 2013 18:02:21 +0530
> On 3/21/2013 5:50 PM, Lothar Wa?mann wrote:
>> The error check in cpsw_probe_dt() has an '&&' where an '||' is
>> meant to be. This causes a NULL pointer dereference when incomplet DT
>> data is passed to the driver ('phy_id' property for cpsw_emac1
>> missing).
>>
>>
>> Signed-off-by: Lothar Wa?mann<[email protected]>
> Acked-by: Mugunthan V N <[email protected]>
Applied, thanks.