Commit ff91e1b6 authored by Vladimir Oltean's avatar Vladimir Oltean Committed by David S. Miller

net: dsa: fix incorrect function pointer check for MRP ring roles

The cross-chip notifier boilerplate code meant to check the presence of
ds->ops->port_mrp_add_ring_role before calling it, but checked
ds->ops->port_mrp_add instead, before calling
ds->ops->port_mrp_add_ring_role.

Therefore, a driver which implements one operation but not the other
would trigger a NULL pointer dereference.

There isn't any such driver in DSA yet, so there is no reason to
backport the change. Issue found through code inspection.

Cc: Horatiu Vultur <horatiu.vultur@microchip.com>
Fixes: c595c433 ("net: dsa: add MRP support")
Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d43e4271
...@@ -729,7 +729,7 @@ static int ...@@ -729,7 +729,7 @@ static int
dsa_switch_mrp_add_ring_role(struct dsa_switch *ds, dsa_switch_mrp_add_ring_role(struct dsa_switch *ds,
struct dsa_notifier_mrp_ring_role_info *info) struct dsa_notifier_mrp_ring_role_info *info)
{ {
if (!ds->ops->port_mrp_add) if (!ds->ops->port_mrp_add_ring_role)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (ds->index == info->sw_index) if (ds->index == info->sw_index)
...@@ -743,7 +743,7 @@ static int ...@@ -743,7 +743,7 @@ static int
dsa_switch_mrp_del_ring_role(struct dsa_switch *ds, dsa_switch_mrp_del_ring_role(struct dsa_switch *ds,
struct dsa_notifier_mrp_ring_role_info *info) struct dsa_notifier_mrp_ring_role_info *info)
{ {
if (!ds->ops->port_mrp_del) if (!ds->ops->port_mrp_del_ring_role)
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (ds->index == info->sw_index) if (ds->index == info->sw_index)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment