local_irq_enable();
                while (1);
        }
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 #ifndef CONFIG_MATHEMU
 
        printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
                pc, va, opcode, reg);
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 
 got_exception:
        /* Ok, we caught the exception, but we don't want it.  Is there
                local_irq_enable();
                while (1);
        }
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /*
 
        printk(KERN_ALERT "Unable to handle kernel paging request at "
               "virtual address %016lx\n", address);
        die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 
        /* We ran out of memory, or some other thing happened to us that
           made us unable to handle the page fault gracefully.  */
 
        if (panic_on_oops)
                panic("Fatal exception");
        if (signr)
-               do_exit(signr);
+               make_task_dead(signr);
 }
 
 /*
 
        show_pte(KERN_ALERT, mm, addr);
        die("Oops", regs, fsr);
        bust_spinlocks(0);
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 /*
 
        raw_spin_unlock_irqrestore(&die_lock, flags);
 
        if (ret != NOTIFY_STOP)
-               do_exit(SIGSEGV);
+               make_task_dead(SIGSEGV);
 }
 
 static void arm64_show_signal(int signo, const char *str)
 
        show_pte(addr);
        die("Oops", regs, esr);
        bust_spinlocks(0);
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 #ifdef CONFIG_KASAN_HW_TAGS
 
                                __func__, opcode, rz, rx, imm, addr);
                show_regs(regs);
                bust_spinlocks(0);
-               do_exit(SIGKILL);
+               make_dead_task(SIGKILL);
        }
 
        force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
 
        if (panic_on_oops)
                panic("Fatal exception");
        if (ret != NOTIFY_STOP)
-               do_exit(SIGSEGV);
+               make_dead_task(SIGSEGV);
 }
 
 void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
 
        pr_alert("Unable to handle kernel paging request at virtual "
                 "addr 0x%08lx, pc: 0x%08lx\n", addr, regs->pc);
        die(regs, "Oops");
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 static inline void mm_fault_error(struct pt_regs *regs, unsigned long addr, vm_fault_t fault)
 
        dump(fp);
 
        spin_unlock_irq(&die_lock);
-       do_exit(SIGSEGV);
+       make_dead_task(SIGSEGV);
 }
 
 static int kstack_depth_to_print = 24;
 
        printk(" at virtual address %08lx\n", address);
        if (!user_mode(regs))
                die("Oops", regs, error_code);
-       do_exit(SIGKILL);
+       make_dead_task(SIGKILL);
 
        return 1;
 }
 
                panic("Fatal exception");
 
        oops_exit();
-       do_exit(err);
+       make_dead_task(err);
        return 0;
 }
 
 
        spin_unlock(&mca_bh_lock);
 
        /* This process is about to be killed itself */
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 /**
 
        if (panic_on_oops)
                panic("Fatal exception");
 
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
        return 0;
 }
 
 
                regs = NULL;
        bust_spinlocks(0);
        if (regs)
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        return;
 
   out_of_memory:
 
        pr_crit("%s: %08x\n", str, nr);
        show_registers(fp);
        add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 asmlinkage void set_esp0(unsigned long ssp)
 
                        pr_alert("Unable to handle kernel access");
                pr_cont(" at virtual address %p\n", addr);
                die_if_kernel("Oops", regs, 0 /*error_code*/);
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        }
 
        return 1;
 
        pr_warn("Oops: %s, sig: %ld\n", str, err);
        show_regs(fp);
        spin_unlock_irq(&die_lock);
-       /* do_exit() should take care of panic'ing from an interrupt
+       /* make_task_dead() should take care of panic'ing from an interrupt
         * context so we don't handle it here
         */
-       do_exit(err);
+       make_task_dead(err);
 }
 
 /* for user application debugging */
 
        if (regs && kexec_should_crash(current))
                crash_kexec(regs);
 
-       do_exit(sig);
+       make_task_dead(sig);
 }
 
 extern struct exception_table_entry __start___dbe_table[];
 
                }
        } else if (fpcsr & FPCSR_mskRIT) {
                if (!user_mode(regs))
-                       do_exit(SIGILL);
+                       make_task_dead(SIGILL);
                si_signo = SIGILL;
        }
 
 
 
        bust_spinlocks(0);
        spin_unlock_irq(&die_lock);
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 EXPORT_SYMBOL(die);
        pr_emerg("unhandled_interruption\n");
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        force_sig(SIGKILL);
 }
 
                 addr, type);
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        force_sig(SIGKILL);
 }
 
        pr_emerg("Reserved Instruction\n");
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGILL);
+               make_task_dead(SIGILL);
        force_sig(SIGILL);
 }
 
 
        show_regs(regs);
        spin_unlock_irq(&die_lock);
        /*
-        * do_exit() should take care of panic'ing from an interrupt
+        * make_task_dead() should take care of panic'ing from an interrupt
         * context so we don't handle it here
         */
-       do_exit(err);
+       make_task_dead(err);
 }
 
 void _exception(int signo, struct pt_regs *regs, int code, unsigned long addr)
 
        __asm__ __volatile__("l.nop   1");
        do {} while (1);
 #endif
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /* This is normally the 'Oops' routine */
 
                panic("Fatal exception");
 
        oops_exit();
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /* gdb uses break 4,8 */
 
 
        if (panic_on_oops)
                panic("Fatal exception");
-       do_exit(signr);
+       make_task_dead(signr);
 }
 NOKPROBE_SYMBOL(oops_end);
 
 void die_mce(const char *str, struct pt_regs *regs, long err)
 {
        /*
-        * The machine check wants to kill the interrupted context, but
-        * do_exit() checks for in_interrupt() and panics in that case, so
-        * exit the irq/nmi before calling die.
+        * The machine check wants to kill the interrupted context,
+        * but make_task_dead() checks for in_interrupt() and panics
+        * in that case, so exit the irq/nmi before calling die.
         */
        if (in_nmi())
                nmi_exit();
 
        if (panic_on_oops)
                panic("Fatal exception");
        if (ret != NOTIFY_STOP)
-               do_exit(SIGSEGV);
+               make_task_dead(SIGSEGV);
 }
 
 void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
 
 
        bust_spinlocks(0);
        die(regs, "Oops");
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 static inline void no_context(struct pt_regs *regs, unsigned long addr)
 
        if (panic_on_oops)
                panic("Fatal exception: panic_on_oops");
        oops_exit();
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
                       "malfunction (code 0x%016lx).\n", mcck.mcck_code);
                printk(KERN_EMERG "mcck: task: %s, pid: %d.\n",
                       current->comm, current->pid);
-               do_exit(SIGSEGV);
+               make_task_dead(SIGSEGV);
        }
 }
 
 
        if (panic_on_oops)
                panic("Fatal exception");
 
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 void die_if_kernel(const char *str, struct pt_regs *regs, long err)
 
        }
        printk("Instruction DUMP:");
        instruction_dump ((unsigned long *) regs->pc);
-       if(regs->psr & PSR_PS)
-               do_exit(SIGKILL);
-       do_exit(SIGSEGV);
+       make_task_dead((regs->psr & PSR_PS) ? SIGKILL : SIGSEGV);
 }
 
 void do_hw_interrupt(struct pt_regs *regs, unsigned long type)
 
        }
        if (panic_on_oops)
                panic("Fatal exception");
-       if (regs->tstate & TSTATE_PRIV)
-               do_exit(SIGKILL);
-       do_exit(SIGSEGV);
+       make_task_dead((regs->tstate & TSTATE_PRIV)? SIGKILL : SIGSEGV);
 }
 EXPORT_SYMBOL(die_if_kernel);
 
 
 SYM_CODE_END(asm_exc_nmi)
 
 .pushsection .text, "ax"
-SYM_CODE_START(rewind_stack_do_exit)
+SYM_CODE_START(rewind_stack_and_make_dead)
        /* Prevent any naive code from trying to unwind to our caller. */
        xorl    %ebp, %ebp
 
        movl    PER_CPU_VAR(cpu_current_top_of_stack), %esi
        leal    -TOP_OF_KERNEL_STACK_PADDING-PTREGS_SIZE(%esi), %esp
 
-       call    do_exit
+       call    make_task_dead
 1:     jmp 1b
-SYM_CODE_END(rewind_stack_do_exit)
+SYM_CODE_END(rewind_stack_and_make_dead)
 .popsection
 
 #endif
 
 .pushsection .text, "ax"
-SYM_CODE_START(rewind_stack_do_exit)
+SYM_CODE_START(rewind_stack_and_make_dead)
        UNWIND_HINT_FUNC
        /* Prevent any naive code from trying to unwind to our caller. */
        xorl    %ebp, %ebp
        leaq    -PTREGS_SIZE(%rax), %rsp
        UNWIND_HINT_REGS
 
-       call    do_exit
-SYM_CODE_END(rewind_stack_do_exit)
+       call    make_task_dead
+SYM_CODE_END(rewind_stack_and_make_dead)
 .popsection
 
 }
 NOKPROBE_SYMBOL(oops_begin);
 
-void __noreturn rewind_stack_do_exit(int signr);
+void __noreturn rewind_stack_and_make_dead(int signr);
 
 void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
 {
         * reuse the task stack and that existing poisons are invalid.
         */
        kasan_unpoison_task_stack(current);
-       rewind_stack_do_exit(signr);
+       rewind_stack_and_make_dead(signr);
 }
 NOKPROBE_SYMBOL(oops_end);
 
 
        if (panic_on_oops)
                panic("Fatal exception");
 
-       do_exit(err);
+       make_task_dead(err);
 }
 
 extern void sched_dead(struct task_struct *p);
 
 void __noreturn do_task_dead(void);
+void __noreturn make_task_dead(int signr);
 
 extern void proc_caches_init(void);
 
 
 }
 EXPORT_SYMBOL_GPL(do_exit);
 
+void __noreturn make_task_dead(int signr)
+{
+       /*
+        * Take the task off the cpu after something catastrophic has
+        * happened.
+        */
+       do_exit(signr);
+}
+
 void complete_and_exit(struct completion *comp, long code)
 {
        if (comp)
 
                "panic",
                "do_exit",
                "do_task_dead",
+               "make_task_dead",
                "__module_put_and_exit",
                "complete_and_exit",
                "__reiserfs_panic",
                "fortify_panic",
                "usercopy_abort",
                "machine_real_restart",
-               "rewind_stack_do_exit",
+               "rewind_stack_and_make_dead"
                "kunit_try_catch_throw",
                "xen_start_kernel",
                "cpu_bringup_and_idle",