net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sun, 24 Oct 2021 17:17:48 +0000 (20:17 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:41 +0000 (19:16 +0100)
commit348273847a56ac4a2bcb148000b8e7ac9cde0078
tree99bf68c66b8822c774e2d115dd374aeaee7a78e4
parent69abfe39c7d6f9c2162e1f7a3b1950124144a1de
net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error

[ Upstream commit 232deb3f9567ce37d99b8616a6c07c1fc0436abf ]

At present, when either of ds->ops->port_fdb_del() or ds->ops->port_mdb_del()
return a non-zero error code, we attempt to save the day and keep the
data structure associated with that switchdev object, as the deletion
procedure did not complete.

However, the way in which we do this is suspicious to the checker in
lib/refcount.c, who thinks it is buggy to increment a refcount that
became zero, and that this is indicative of a use-after-free.

Fixes: 161ca59d39e9 ("net: dsa: reference count the MDB entries at the cross-chip notifier level")
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>
net/dsa/switch.c