* If we cannot acquire the cache chain mutex then just give up - we'll try
  * again on the next iteration.
  */
-static void cache_reap(struct work_struct *unused)
+static void cache_reap(struct work_struct *w)
 {
        struct kmem_cache *searchp;
        struct kmem_list3 *l3;
        int node = numa_node_id();
+       struct delayed_work *work =
+               container_of(w, struct delayed_work, work);
 
-       if (!mutex_trylock(&cache_chain_mutex)) {
+       if (!mutex_trylock(&cache_chain_mutex))
                /* Give up. Setup the next iteration. */
-               schedule_delayed_work(&__get_cpu_var(reap_work),
-                                     round_jiffies_relative(REAPTIMEOUT_CPUC));
-               return;
-       }
+               goto out;
 
        list_for_each_entry(searchp, &cache_chain, next) {
                check_irq_on();
        mutex_unlock(&cache_chain_mutex);
        next_reap_node();
        refresh_cpu_vm_stats(smp_processor_id());
+out:
        /* Set up the next iteration */
-       schedule_delayed_work(&__get_cpu_var(reap_work),
-               round_jiffies_relative(REAPTIMEOUT_CPUC));
+       schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC));
 }
 
 #ifdef CONFIG_PROC_FS