net: mscc: ocelot: fix use-after-free in ocelot_vlan_del()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Mon, 14 Feb 2022 23:42:00 +0000 (01:42 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Feb 2022 14:38:20 +0000 (14:38 +0000)
commitef57640575406f57f5b3393cf57f457b0ace837e
tree28ac2d8908ced43c0fe84c3767f7c1746a63c7c1
parent9ceaf6f76b203682bb6100e14b3d7da4c0bedde8
net: mscc: ocelot: fix use-after-free in ocelot_vlan_del()

ocelot_vlan_member_del() will free the struct ocelot_bridge_vlan, so if
this is the same as the port's pvid_vlan which we access afterwards,
what we're accessing is freed memory.

Fix the bug by determining whether to clear ocelot_port->pvid_vlan prior
to calling ocelot_vlan_member_del().

Fixes: d4004422f6f9 ("net: mscc: ocelot: track the port pvid using a pointer")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mscc/ocelot.c