Commit d1a9b841 authored by Ioana Ciornei's avatar Ioana Ciornei Committed by Jakub Kicinski

dpaa2-switch: check if the port priv is valid

Before accessing the port private structure make sure that there is
still a non-NULL pointer there. A NULL pointer access can happen when we
are on the remove path, some switch ports are unregistered and some are
in the process of unregistering.
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4e30e98c
...@@ -394,6 +394,7 @@ static int dpaa2_switch_dellink(struct ethsw_core *ethsw, u16 vid) ...@@ -394,6 +394,7 @@ static int dpaa2_switch_dellink(struct ethsw_core *ethsw, u16 vid)
for (i = 0; i < ethsw->sw_attr.num_ifs; i++) { for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
ppriv_local = ethsw->ports[i]; ppriv_local = ethsw->ports[i];
if (ppriv_local)
ppriv_local->vlans[vid] = 0; ppriv_local->vlans[vid] = 0;
} }
...@@ -1896,9 +1897,11 @@ static int dpaa2_switch_port_del_vlan(struct ethsw_port_priv *port_priv, u16 vid ...@@ -1896,9 +1897,11 @@ static int dpaa2_switch_port_del_vlan(struct ethsw_port_priv *port_priv, u16 vid
/* Delete VLAN from switch if it is no longer configured on /* Delete VLAN from switch if it is no longer configured on
* any port * any port
*/ */
for (i = 0; i < ethsw->sw_attr.num_ifs; i++) for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
if (ethsw->ports[i]->vlans[vid] & ETHSW_VLAN_MEMBER) if (ethsw->ports[i] &&
ethsw->ports[i]->vlans[vid] & ETHSW_VLAN_MEMBER)
return 0; /* Found a port member in VID */ return 0; /* Found a port member in VID */
}
ethsw->vlans[vid] &= ~ETHSW_VLAN_GLOBAL; ethsw->vlans[vid] &= ~ETHSW_VLAN_GLOBAL;
......
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