net: dsa: fix incorrect function pointer check for MRP ring roles
[ 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: c595c4330d ("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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6dab20da69
commit
21bdddc964
@@ -644,7 +644,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)
|
||||||
@@ -658,7 +658,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)
|
||||||
|
|||||||
Reference in New Issue
Block a user