Discussion:
[PATCH] Net: DSA: Fix checking for get_phy_flags function
Andrew Lunn
2014-10-19 00:13:26 UTC
Permalink
The check for the presence or not of the optional switch function
get_phy_flags() called the function, rather than checking to see if it
is a NULL pointer. This causes a derefernce of a NULL pointer on all
switch chips except the sf2, the only switch to implement this call.

Signed-off-by: Andrew Lunn <***@lunn.ch>
Fixes: 6819563e646a "net: dsa: allow switch drivers to ...
Cc: Florian Fainelli <***@gmail.com>
---
net/dsa/slave.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 9d3b12b4e03c..fbcba4bc4e08 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -596,7 +596,7 @@ dsa_slave_create(struct dsa_switch *ds, struct device *parent,
netif_carrier_off(slave_dev);

if (p->phy != NULL) {
- if (ds->drv->get_phy_flags(ds, port))
+ if (ds->drv->get_phy_flags)
p->phy->dev_flags |= ds->drv->get_phy_flags(ds, port);

phy_attach(slave_dev, dev_name(&p->phy->dev),
--
2.1.1
Florian Fainelli
2014-10-19 03:08:50 UTC
Permalink
Post by Andrew Lunn
The check for the presence or not of the optional switch function
get_phy_flags() called the function, rather than checking to see if it
is a NULL pointer. This causes a derefernce of a NULL pointer on all
switch chips except the sf2, the only switch to implement this call.
Sorry about this one, good catch.
Post by Andrew Lunn
Fixes: 6819563e646a "net: dsa=: allow switch drivers to ...
Could you resubmit without stripping the "Fixes" subject?
Post by Andrew Lunn
---
net/dsa/slave.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 9d3b12b4e03c..fbcba4bc4e08 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -596,7 +596,7 @@ dsa_slave_create(struct dsa_switch *ds, struct device *parent,
netif_carrier_off(slave_dev);
if (p->phy != NULL) {
- if (ds->drv->get_phy_flags(ds, port))
+ if (ds->drv->get_phy_flags)
p->phy->dev_flags |= ds->drv->get_phy_flags(ds, port);
phy_attach(slave_dev, dev_name(&p->phy->dev),
--
2.1.1
--
Florian
Loading...