net: switchdev: recurse into __switchdev_handle_fdb_del_to_device
The difference between __switchdev_handle_fdb_del_to_device and switchdev_handle_del_to_device is that the former takes an extra orig_dev argument, while the latter starts with dev == orig_dev. We should recurse into the variant that does not lose the orig_dev along the way. This is relevant when deleting FDB entries pointing towards a bridge (dev changes to the lower interfaces, but orig_dev shouldn't). The addition helper already recurses properly, just the deletion one doesn't. Fixes: 8ca07176ab00 ("net: switchdev: introduce a fanout helper for SWITCHDEV_FDB_{ADD,DEL}_TO_DEVICE") Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
94111dfc18
commit
71f4f89a03
@ -532,10 +532,10 @@ static int __switchdev_handle_fdb_del_to_device(struct net_device *dev,
|
||||
if (netif_is_bridge_master(lower_dev))
|
||||
continue;
|
||||
|
||||
err = switchdev_handle_fdb_del_to_device(lower_dev, fdb_info,
|
||||
check_cb,
|
||||
foreign_dev_check_cb,
|
||||
del_cb, lag_del_cb);
|
||||
err = __switchdev_handle_fdb_del_to_device(lower_dev, orig_dev,
|
||||
fdb_info, check_cb,
|
||||
foreign_dev_check_cb,
|
||||
del_cb, lag_del_cb);
|
||||
if (err && err != -EOPNOTSUPP)
|
||||
return err;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user