*
  * This is the blkcg counterpart of ioc_release_fn().
  */
-static int blkcg_pre_destroy(struct cgroup *cgroup)
+static void blkcg_pre_destroy(struct cgroup *cgroup)
 {
        struct blkcg *blkcg = cgroup_to_blkcg(cgroup);
 
        }
 
        spin_unlock_irq(&blkcg->lock);
-       return 0;
 }
 
 static void blkcg_destroy(struct cgroup *cgroup)
 
 
 struct cgroup_subsys {
        struct cgroup_subsys_state *(*create)(struct cgroup *cgrp);
-       int (*pre_destroy)(struct cgroup *cgrp);
+       void (*pre_destroy)(struct cgroup *cgrp);
        void (*destroy)(struct cgroup *cgrp);
        int (*can_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
        void (*cancel_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
 
        mutex_unlock(&cgroup_mutex);
        for_each_subsys(cgrp->root, ss)
                if (ss->pre_destroy)
-                       WARN_ON_ONCE(ss->pre_destroy(cgrp));
+                       ss->pre_destroy(cgrp);
        mutex_lock(&cgroup_mutex);
 
        /*
 
  * Force the hugetlb cgroup to empty the hugetlb resources by moving them to
  * the parent cgroup.
  */
-static int hugetlb_cgroup_pre_destroy(struct cgroup *cgroup)
+static void hugetlb_cgroup_pre_destroy(struct cgroup *cgroup)
 {
        struct hstate *h;
        struct page *page;
                }
                cond_resched();
        } while (hugetlb_cgroup_have_usage(cgroup));
-
-       return 0;
 }
 
 int hugetlb_cgroup_charge_cgroup(int idx, unsigned long nr_pages,
 
        return ERR_PTR(error);
 }
 
-static int mem_cgroup_pre_destroy(struct cgroup *cont)
+static void mem_cgroup_pre_destroy(struct cgroup *cont)
 {
        struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
 
        mem_cgroup_reparent_charges(memcg);
-       return 0;
 }
 
 static void mem_cgroup_destroy(struct cgroup *cont)