mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
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: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4e30e98c4b
commit
d1a9b84183
|
|
@ -394,7 +394,8 @@ static int dpaa2_switch_dellink(struct ethsw_core *ethsw, u16 vid)
|
|||
|
||||
for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
|
||||
ppriv_local = ethsw->ports[i];
|
||||
ppriv_local->vlans[vid] = 0;
|
||||
if (ppriv_local)
|
||||
ppriv_local->vlans[vid] = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -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
|
||||
* any port
|
||||
*/
|
||||
for (i = 0; i < ethsw->sw_attr.num_ifs; i++)
|
||||
if (ethsw->ports[i]->vlans[vid] & ETHSW_VLAN_MEMBER)
|
||||
for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
|
||||
if (ethsw->ports[i] &&
|
||||
ethsw->ports[i]->vlans[vid] & ETHSW_VLAN_MEMBER)
|
||||
return 0; /* Found a port member in VID */
|
||||
}
|
||||
|
||||
ethsw->vlans[vid] &= ~ETHSW_VLAN_GLOBAL;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user