*/
 static struct task_struct *oom_reaper_th;
 static DECLARE_WAIT_QUEUE_HEAD(oom_reaper_wait);
-static LIST_HEAD(oom_reaper_list);
+static struct task_struct *oom_reaper_list;
 static DEFINE_SPINLOCK(oom_reaper_lock);
 
 
        while (true) {
                struct task_struct *tsk = NULL;
 
-               wait_event_freezable(oom_reaper_wait,
-                                    (!list_empty(&oom_reaper_list)));
+               wait_event_freezable(oom_reaper_wait, oom_reaper_list != NULL);
                spin_lock(&oom_reaper_lock);
-               if (!list_empty(&oom_reaper_list)) {
-                       tsk = list_first_entry(&oom_reaper_list,
-                                       struct task_struct, oom_reaper_list);
-                       list_del(&tsk->oom_reaper_list);
+               if (oom_reaper_list != NULL) {
+                       tsk = oom_reaper_list;
+                       oom_reaper_list = tsk->oom_reaper_list;
                }
                spin_unlock(&oom_reaper_lock);
 
        get_task_struct(tsk);
 
        spin_lock(&oom_reaper_lock);
-       list_add(&tsk->oom_reaper_list, &oom_reaper_list);
+       tsk->oom_reaper_list = oom_reaper_list;
+       oom_reaper_list = tsk;
        spin_unlock(&oom_reaper_lock);
        wake_up(&oom_reaper_wait);
 }