};
        struct mlxsw_sp_nexthop_group_info *nhgi;
        enum mlxsw_sp_nexthop_group_type type;
+       bool can_destroy;
 };
 
 void mlxsw_sp_nexthop_counter_alloc(struct mlxsw_sp *mlxsw_sp,
        if (err)
                goto err_nexthop_group_insert;
 
+       nh_grp->can_destroy = true;
+
        return nh_grp;
 
 err_nexthop_group_insert:
 mlxsw_sp_nexthop4_group_destroy(struct mlxsw_sp *mlxsw_sp,
                                struct mlxsw_sp_nexthop_group *nh_grp)
 {
+       if (!nh_grp->can_destroy)
+               return;
        mlxsw_sp_nexthop_group_remove(mlxsw_sp, nh_grp);
        mlxsw_sp_nexthop4_group_info_fini(mlxsw_sp, nh_grp);
        fib_info_put(nh_grp->ipv4.fi);
        if (err)
                goto err_nexthop_group_insert;
 
+       nh_grp->can_destroy = true;
+
        return nh_grp;
 
 err_nexthop_group_insert:
 mlxsw_sp_nexthop6_group_destroy(struct mlxsw_sp *mlxsw_sp,
                                struct mlxsw_sp_nexthop_group *nh_grp)
 {
+       if (!nh_grp->can_destroy)
+               return;
        mlxsw_sp_nexthop_group_remove(mlxsw_sp, nh_grp);
        mlxsw_sp_nexthop6_group_info_fini(mlxsw_sp, nh_grp);
        kfree(nh_grp);