Skip to content

Commit f58a83c

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum_switchdev: Avoid leaking FID's reference count
It should never be possible for a user to set a VNI on a FID in case one is already set. The driver therefore returns an error, but fails to drop the reference count taken earlier when calling mlxsw_sp_fid_8021d_lookup(). Drop the reference when this unlikely error is hit. Fixes: 1c30d18 ("mlxsw: spectrum: Enable VxLAN enslavement to bridges") Signed-off-by: Ido Schimmel <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 050fc01 commit f58a83c

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,8 +2134,10 @@ mlxsw_sp_bridge_8021d_vxlan_join(struct mlxsw_sp_bridge_device *bridge_device,
21342134
if (!fid)
21352135
return -EINVAL;
21362136

2137-
if (mlxsw_sp_fid_vni_is_set(fid))
2138-
return -EINVAL;
2137+
if (mlxsw_sp_fid_vni_is_set(fid)) {
2138+
err = -EINVAL;
2139+
goto err_vni_exists;
2140+
}
21392141

21402142
err = mlxsw_sp_nve_fid_enable(mlxsw_sp, fid, &params, extack);
21412143
if (err)
@@ -2149,6 +2151,7 @@ mlxsw_sp_bridge_8021d_vxlan_join(struct mlxsw_sp_bridge_device *bridge_device,
21492151
return 0;
21502152

21512153
err_nve_fid_enable:
2154+
err_vni_exists:
21522155
mlxsw_sp_fid_put(fid);
21532156
return err;
21542157
}

0 commit comments

Comments
 (0)