mlxsw_sp_rif_counters_alloc(rif);
        }
 
+       atomic_inc(&mlxsw_sp->router->rifs_count);
        return rif;
 
 err_stats_enable:
        struct mlxsw_sp_vr *vr;
        int i;
 
+       atomic_dec(&mlxsw_sp->router->rifs_count);
        mlxsw_sp_router_rif_gone_sync(mlxsw_sp, rif);
        vr = &mlxsw_sp->router->vrs[rif->vr_id];
 
        if (err)
                goto ul_rif_op_err;
 
+       atomic_inc(&mlxsw_sp->router->rifs_count);
        return ul_rif;
 
 ul_rif_op_err:
 {
        struct mlxsw_sp *mlxsw_sp = ul_rif->mlxsw_sp;
 
+       atomic_dec(&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);
 
        idr_init(&mlxsw_sp->router->rif_mac_profiles_idr);
        atomic_set(&mlxsw_sp->router->rif_mac_profiles_count, 0);
+       atomic_set(&mlxsw_sp->router->rifs_count, 0);
        devlink_resource_occ_get_register(devlink,
                                          MLXSW_SP_RESOURCE_RIF_MAC_PROFILES,
                                          mlxsw_sp_rif_mac_profiles_occ_get,
        struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
        int i;
 
+       WARN_ON_ONCE(atomic_read(&mlxsw_sp->router->rifs_count));
        for (i = 0; i < MLXSW_CORE_RES_GET(mlxsw_sp->core, MAX_RIFS); i++)
                WARN_ON_ONCE(mlxsw_sp->router->rifs[i]);