From: Vladimir Oltean vladimir.oltean@nxp.com
[ Upstream commit ff91e1b68490b97c18c649b769618815eb945f11 ]
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: c595c4330da0 ("net: dsa: add MRP support") Signed-off-by: Vladimir Oltean vladimir.oltean@nxp.com Signed-off-by: David S. Miller davem@davemloft.net Signed-off-by: Sasha Levin sashal@kernel.org --- net/dsa/switch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/dsa/switch.c b/net/dsa/switch.c index bb155a16d4540..80816f7e1f996 100644 --- a/net/dsa/switch.c +++ b/net/dsa/switch.c @@ -675,7 +675,7 @@ static int dsa_switch_mrp_add_ring_role(struct dsa_switch *ds, struct dsa_notifier_mrp_ring_role_info *info) { - if (!ds->ops->port_mrp_add) + if (!ds->ops->port_mrp_add_ring_role) return -EOPNOTSUPP;
if (ds->index == info->sw_index) @@ -689,7 +689,7 @@ static int dsa_switch_mrp_del_ring_role(struct dsa_switch *ds, struct dsa_notifier_mrp_ring_role_info *info) { - if (!ds->ops->port_mrp_del) + if (!ds->ops->port_mrp_del_ring_role) return -EOPNOTSUPP;
if (ds->index == info->sw_index)