#endif
 #define S_SMP " SMP"
 
-static int __die(const char *str, int err, struct thread_info *thread,
-                struct pt_regs *regs)
+static int __die(const char *str, int err, struct pt_regs *regs)
 {
-       struct task_struct *tsk = thread->task;
+       struct task_struct *tsk = current;
        static int die_counter;
        int ret;
 
        print_modules();
        __show_regs(regs);
        pr_emerg("Process %.*s (pid: %d, stack limit = 0x%p)\n",
-                TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), thread + 1);
+                TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk),
+                end_of_stack(tsk));
 
        if (!user_mode(regs)) {
                dump_mem(KERN_EMERG, "Stack: ", regs->sp,
  */
 void die(const char *str, struct pt_regs *regs, int err)
 {
-       struct thread_info *thread = current_thread_info();
        int ret;
 
        oops_enter();
        raw_spin_lock_irq(&die_lock);
        console_verbose();
        bust_spinlocks(1);
-       ret = __die(str, err, thread, regs);
+       ret = __die(str, err, regs);
 
-       if (regs && kexec_should_crash(thread->task))
+       if (regs && kexec_should_crash(current))
                crash_kexec(regs);
 
        bust_spinlocks(0);