Skip to content

Commit b61cd7c

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum_router: Hold a reference on RIF's netdev
Previous patches tried to make RIF deletion more robust and avoid use-after-free situations. As another precaution, hold a reference on a RIF's netdev and release it when the RIF is deleted. Signed-off-by: Ido Schimmel <[email protected]> Reviewed-by: Petr Machata <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 965fa8e commit b61cd7c

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6302,6 +6302,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
63026302
err = -ENOMEM;
63036303
goto err_rif_alloc;
63046304
}
6305+
dev_hold(rif->dev);
63056306
rif->mlxsw_sp = mlxsw_sp;
63066307
rif->ops = ops;
63076308

@@ -6340,6 +6341,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
63406341
if (fid)
63416342
mlxsw_sp_fid_put(fid);
63426343
err_fid_get:
6344+
dev_put(rif->dev);
63436345
kfree(rif);
63446346
err_rif_alloc:
63456347
err_rif_index_alloc:
@@ -6367,6 +6369,7 @@ static void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif)
63676369
if (fid)
63686370
/* Loopback RIFs are not associated with a FID. */
63696371
mlxsw_sp_fid_put(fid);
6372+
dev_put(rif->dev);
63706373
kfree(rif);
63716374
vr->rif_count--;
63726375
mlxsw_sp_vr_put(mlxsw_sp, vr);

0 commit comments

Comments
 (0)