memcg_free_cache_id(kmemcg_id);
 }
-
-static void memcg_free_kmem(struct mem_cgroup *memcg)
-{
-       /* css_alloc() failed, offlining didn't happen */
-       if (unlikely(memcg->kmem_state == KMEM_ONLINE))
-               memcg_offline_kmem(memcg);
-}
 #else
 static int memcg_online_kmem(struct mem_cgroup *memcg)
 {
 static void memcg_offline_kmem(struct mem_cgroup *memcg)
 {
 }
-static void memcg_free_kmem(struct mem_cgroup *memcg)
-{
-}
 #endif /* CONFIG_MEMCG_KMEM */
 
 static int memcg_update_kmem_max(struct mem_cgroup *memcg,
        cancel_work_sync(&memcg->high_work);
        mem_cgroup_remove_from_trees(memcg);
        free_shrinker_info(memcg);
-       memcg_free_kmem(memcg);
+
+       /* Need to offline kmem if online_css() fails */
+       memcg_offline_kmem(memcg);
        mem_cgroup_free(memcg);
 }