return rif;
 }
 
+static void mlxsw_sp_rif_free(struct mlxsw_sp_rif *rif)
+{
+       WARN_ON(!list_empty(&rif->neigh_list));
+       WARN_ON(!list_empty(&rif->nexthop_list));
+       kfree(rif);
+}
+
 struct mlxsw_sp_rif *mlxsw_sp_rif_by_index(const struct mlxsw_sp *mlxsw_sp,
                                           u16 rif_index)
 {
 err_fid_get:
        mlxsw_sp->router->rifs[rif_index] = NULL;
        dev_put(params->dev);
-       kfree(rif);
+       mlxsw_sp_rif_free(rif);
 err_rif_alloc:
        mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
 err_rif_index_alloc:
                mlxsw_sp_fid_put(fid);
        mlxsw_sp->router->rifs[rif->rif_index] = NULL;
        dev_put(dev);
-       kfree(rif);
+       mlxsw_sp_rif_free(rif);
        mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
        vr->rif_count--;
        mlxsw_sp_vr_put(mlxsw_sp, vr);
 
 ul_rif_op_err:
        mlxsw_sp->router->rifs[rif_index] = NULL;
-       kfree(ul_rif);
+       mlxsw_sp_rif_free(ul_rif);
 err_rif_alloc:
        mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
        return ERR_PTR(err);
        atomic_sub(rif_entries, &mlxsw_sp->router->rifs_count);
        mlxsw_sp_rif_ipip_lb_ul_rif_op(ul_rif, false);
        mlxsw_sp->router->rifs[ul_rif->rif_index] = NULL;
-       kfree(ul_rif);
+       mlxsw_sp_rif_free(ul_rif);
        mlxsw_sp_rif_index_free(mlxsw_sp, rif_index, rif_entries);
 }