ca = task_ca(tsk);
  
        for (; ca; ca = ca->parent) {
-               u64 *cpuusage = percpu_ptr(ca->cpuusage, cpu);
+               u64 *cpuusage = per_cpu_ptr(ca->cpuusage, cpu);
                *cpuusage += cputime;
        }
 +
 +      rcu_read_unlock();
 +}
 +
 +/*
 + * Charge the system/user time to the task's accounting group.
 + */
 +static void cpuacct_update_stats(struct task_struct *tsk,
 +              enum cpuacct_stat_index idx, cputime_t val)
 +{
 +      struct cpuacct *ca;
 +
 +      if (unlikely(!cpuacct_subsys.active))
 +              return;
 +
 +      rcu_read_lock();
 +      ca = task_ca(tsk);
 +
 +      do {
 +              percpu_counter_add(&ca->cpustat[idx], val);
 +              ca = ca->parent;
 +      } while (ca);
 +      rcu_read_unlock();
  }
  
  struct cgroup_subsys cpuacct_subsys = {