]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 10 Feb 2022 17:40:17 +0000 (19:40 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 10 Feb 2022 19:46:03 +0000 (11:46 -0800)
commita29e3daa366a51feda2d5422c9ff53008288e485
tree626e5116331ffee051251a8517610df7214568f7
parente424be3523d1d81c809220e53c70171bad1d8673
net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister

Since struct mv88e6xxx_mdio_bus *mdio_bus is the bus->priv of something
allocated with mdiobus_alloc_size(), this means that mdiobus_free(bus)
will free the memory backing the mdio_bus as well. Therefore, the
mdio_bus->list element is freed memory, but we continue to iterate
through the list of MDIO buses using that list element.

To fix this, use the proper list iterator that handles element deletion
by keeping a copy of the list element next pointer.

Fixes: 9163f0cd93fe ("net: dsa: mv88e6xxx: don't use devres for mdiobus")
Reported-by: Rafael Richter <rafael.richter@gin.de>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://lore.kernel.org/r/20220210174017.3271099-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mv88e6xxx/chip.c