]> git.baikalelectronics.ru Git - kernel.git/commitdiff
exit: Add and use make_task_dead.
authorEric W. Biederman <ebiederm@xmission.com>
Mon, 28 Jun 2021 19:52:01 +0000 (14:52 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Mon, 13 Dec 2021 18:04:45 +0000 (12:04 -0600)
There are two big uses of do_exit.  The first is it's design use to be
the guts of the exit(2) system call.  The second use is to terminate
a task after something catastrophic has happened like a NULL pointer
in kernel code.

Add a function make_task_dead that is initialy exactly the same as
do_exit to cover the cases where do_exit is called to handle
catastrophic failure.  In time this can probably be reduced to just a
light wrapper around do_task_dead. For now keep it exactly the same so
that there will be no behavioral differences introducing this new
concept.

Replace all of the uses of do_exit that use it for catastraphic
task cleanup with make_task_dead to make it clear what the code
is doing.

As part of this rename rewind_stack_do_exit
rewind_stack_and_make_dead.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
39 files changed:
arch/alpha/kernel/traps.c
arch/alpha/mm/fault.c
arch/arm/kernel/traps.c
arch/arm/mm/fault.c
arch/arm64/kernel/traps.c
arch/arm64/mm/fault.c
arch/csky/abiv1/alignment.c
arch/csky/kernel/traps.c
arch/csky/mm/fault.c
arch/h8300/kernel/traps.c
arch/h8300/mm/fault.c
arch/hexagon/kernel/traps.c
arch/ia64/kernel/mca_drv.c
arch/ia64/kernel/traps.c
arch/ia64/mm/fault.c
arch/m68k/kernel/traps.c
arch/m68k/mm/fault.c
arch/microblaze/kernel/exceptions.c
arch/mips/kernel/traps.c
arch/nds32/kernel/fpu.c
arch/nds32/kernel/traps.c
arch/nios2/kernel/traps.c
arch/openrisc/kernel/traps.c
arch/parisc/kernel/traps.c
arch/powerpc/kernel/traps.c
arch/riscv/kernel/traps.c
arch/riscv/mm/fault.c
arch/s390/kernel/dumpstack.c
arch/s390/kernel/nmi.c
arch/sh/kernel/traps.c
arch/sparc/kernel/traps_32.c
arch/sparc/kernel/traps_64.c
arch/x86/entry/entry_32.S
arch/x86/entry/entry_64.S
arch/x86/kernel/dumpstack.c
arch/xtensa/kernel/traps.c
include/linux/sched/task.h
kernel/exit.c
tools/objtool/check.c

index 2ae34702456cd581506ede6c196b40ed4818531b..8a66fe544c69bcf100eae7711ffb1f2202b195fb 100644 (file)
@@ -190,7 +190,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)
                local_irq_enable();
                while (1);
        }
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 #ifndef CONFIG_MATHEMU
@@ -575,7 +575,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
 
        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
@@ -630,7 +630,7 @@ got_exception:
                local_irq_enable();
                while (1);
        }
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /*
index eee5102c3d8897200545314e88cc664e3e33d1ac..e9193d52222eaa47f7039bea50e9c59041bbdd9b 100644 (file)
@@ -204,7 +204,7 @@ retry:
        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.  */
index 195dff58bafc73277667a2f3f45badd3490022cc..b4bd2e5f17c14e5133446cc9457d9d7b053f67f2 100644 (file)
@@ -333,7 +333,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
        if (panic_on_oops)
                panic("Fatal exception");
        if (signr)
-               do_exit(signr);
+               make_task_dead(signr);
 }
 
 /*
index bc8779d54a64051d4648de6c60ff053d9652226d..bf1a0c618c49bb47029c2080aaa963f083c970de 100644 (file)
@@ -111,7 +111,7 @@ static void die_kernel_fault(const char *msg, struct mm_struct *mm,
        show_pte(KERN_ALERT, mm, addr);
        die("Oops", regs, fsr);
        bust_spinlocks(0);
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 /*
index 7b21213a570fc3b0a05299ac657c8978d725d7a6..bdd456e4e7f48b4bca1c2faf7bbbfad76aa8831e 100644 (file)
@@ -235,7 +235,7 @@ void die(const char *str, struct pt_regs *regs, int err)
        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)
index 9ae24e3b72be119792c13f36df8a8e83b505f5e7..11a28cace2d25aa603e50c2f431bfe2b5ea16391 100644 (file)
@@ -302,7 +302,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,
        show_pte(addr);
        die("Oops", regs, esr);
        bust_spinlocks(0);
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 #ifdef CONFIG_KASAN_HW_TAGS
index cb2a0d94a144d381541d81da2618c46849b7345b..5e2fb45d605cffa5a63a11e53f1cccd1e623f76a 100644 (file)
@@ -294,7 +294,7 @@ bad_area:
                                __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);
index e5fbf8653a2158825d660b4e8332f0baab836cda..88a47035b9256f96d0887babd52b65378f109564 100644 (file)
@@ -109,7 +109,7 @@ void die(struct pt_regs *regs, const char *str)
        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)
index 466ad949818a6843d3127bf8f7a8edbf46e5ec18..7215a46b6b8eb8ee4fe81b781decafa75064b4e1 100644 (file)
@@ -67,7 +67,7 @@ static inline void no_context(struct pt_regs *regs, 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)
index bdbe988d8dbcf4e30228e6c9260e579ea318bf1b..3d4e0bde37ae7dc65520a05730d44486a848a8f8 100644 (file)
@@ -106,7 +106,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err)
        dump(fp);
 
        spin_unlock_irq(&die_lock);
-       do_exit(SIGSEGV);
+       make_dead_task(SIGSEGV);
 }
 
 static int kstack_depth_to_print = 24;
index d4bc9c16f2df9b08862f7ea6590daace1cf0c9f4..0223528565dd3d268a241b2ad163c3179f5adc0b 100644 (file)
@@ -51,7 +51,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
        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;
 }
index edfc35dafeb19b5a09c659d0f7b167953183c13d..6dd6cf0ab711fdc4121f4d257f0d95de7965d91b 100644 (file)
@@ -214,7 +214,7 @@ int die(const char *str, struct pt_regs *regs, long err)
                panic("Fatal exception");
 
        oops_exit();
-       do_exit(err);
+       make_dead_task(err);
        return 0;
 }
 
index 5bfc79be4cefe3a2922545498ee31633909f7800..23c203639a96823bfc30080079431d28aa953b31 100644 (file)
@@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)
        spin_unlock(&mca_bh_lock);
 
        /* This process is about to be killed itself */
-       do_exit(SIGKILL);
+       make_task_dead(SIGKILL);
 }
 
 /**
index e13cb905930fb754bdaf899ec6c950970377b733..753642366e12eba9fdb4850af7b4ab54bbfb25a0 100644 (file)
@@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err)
        if (panic_on_oops)
                panic("Fatal exception");
 
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
        return 0;
 }
 
index 02de2e70c5874dfd50fba2cc50437d9c2ad82da0..4796cccbf74f3cf0f258bead0198e43b72253e24 100644 (file)
@@ -259,7 +259,7 @@ retry:
                regs = NULL;
        bust_spinlocks(0);
        if (regs)
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        return;
 
   out_of_memory:
index 34d6458340b0f79097a7e0f17326012a7823c042..59fc63feb0dcce8a7ea22e4516c9d598a600a28b 100644 (file)
@@ -1131,7 +1131,7 @@ void die_if_kernel (char *str, struct pt_regs *fp, int nr)
        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)
index ef46e77e97a5b35ad0315691af456ca90f1870fb..fcb3a0d8421c5f71b208cc7986952d11a7f345b9 100644 (file)
@@ -48,7 +48,7 @@ int send_fault_sig(struct pt_regs *regs)
                        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;
index 908788497b28701d0f73bb84db8fd62c21857fa2..fd153d5fab982fc8eae804edb6dd2c11dad118a8 100644 (file)
@@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err)
        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 */
index d26b0fb8ea067e524af129541cb4172e11435fd3..a486486b2355c7a348f2670206b9047f5540ee59 100644 (file)
@@ -422,7 +422,7 @@ void __noreturn die(const char *str, struct pt_regs *regs)
        if (regs && kexec_should_crash(current))
                crash_kexec(regs);
 
-       do_exit(sig);
+       make_task_dead(sig);
 }
 
 extern struct exception_table_entry __start___dbe_table[];
index 9edd7ed7d7bf849e6d32b8036f6d6b5f1b0f37a5..701c09a668de468899632429e71e5a20ed284edf 100644 (file)
@@ -223,7 +223,7 @@ inline void handle_fpu_exception(struct pt_regs *regs)
                }
        } else if (fpcsr & FPCSR_mskRIT) {
                if (!user_mode(regs))
-                       do_exit(SIGILL);
+                       make_task_dead(SIGILL);
                si_signo = SIGILL;
        }
 
index ca75d475eda4fe94834a782a3088aa132505402f..c0a8f3344fb94f0ff64a43b0829a18d9b4824fc3 100644 (file)
@@ -141,7 +141,7 @@ void __noreturn die(const char *str, struct pt_regs *regs, int err)
 
        bust_spinlocks(0);
        spin_unlock_irq(&die_lock);
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 EXPORT_SYMBOL(die);
@@ -240,7 +240,7 @@ void unhandled_interruption(struct pt_regs *regs)
        pr_emerg("unhandled_interruption\n");
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        force_sig(SIGKILL);
 }
 
@@ -251,7 +251,7 @@ void unhandled_exceptions(unsigned long entry, unsigned long addr,
                 addr, type);
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGKILL);
+               make_task_dead(SIGKILL);
        force_sig(SIGKILL);
 }
 
@@ -278,7 +278,7 @@ void do_revinsn(struct pt_regs *regs)
        pr_emerg("Reserved Instruction\n");
        show_regs(regs);
        if (!user_mode(regs))
-               do_exit(SIGILL);
+               make_task_dead(SIGILL);
        force_sig(SIGILL);
 }
 
index 596986a74a26d3b24ab2262a3c3cfd9a671bc08a..85ac49d64cf736bdc82c49e2c95d2fe3889d7bab 100644 (file)
@@ -37,10 +37,10 @@ void die(const char *str, struct pt_regs *regs, long err)
        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)
index 0898cb159faca5a387434d0eab58c21f0583b442..0446a3c34372f04a45b89523ef1c1ec6e8e4b4e8 100644 (file)
@@ -212,7 +212,7 @@ void __noreturn die(const char *str, struct pt_regs *regs, long err)
        __asm__ __volatile__("l.nop   1");
        do {} while (1);
 #endif
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /* This is normally the 'Oops' routine */
index b11fb26ce2998d7b8884c75ff05129c1f48c1db2..df2122c50d78de56e76af395664857c5dbf17cb5 100644 (file)
@@ -269,7 +269,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err)
                panic("Fatal exception");
 
        oops_exit();
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
 
 /* gdb uses break 4,8 */
index 11741703d26e0719b7b2d7488ebb54203fa2026d..a08bb7cefdc545671627dcf1c45767e23cbacefa 100644 (file)
@@ -245,7 +245,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs,
 
        if (panic_on_oops)
                panic("Fatal exception");
-       do_exit(signr);
+       make_task_dead(signr);
 }
 NOKPROBE_SYMBOL(oops_end);
 
@@ -792,9 +792,9 @@ int machine_check_generic(struct pt_regs *regs)
 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();
index 0daaa3e4630d41c0ac91c63a5ad67272d0782b82..fe92e119e6a3332e4d997176961bac6d0e439dd8 100644 (file)
@@ -54,7 +54,7 @@ void die(struct pt_regs *regs, const char *str)
        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)
index aa08dd2f8faec2625500fe6f5a40afd36cfe65d3..42118bc728f9458cd08f98d7fea2c6eccbf71de3 100644 (file)
@@ -31,7 +31,7 @@ static void die_kernel_fault(const char *msg, 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)
index 0681c55e831d7aaddd2a80d0abacaa317d60768f..1e3233eb510a9a69ed6e4a7d5a546dd81bedb2d3 100644 (file)
@@ -224,5 +224,5 @@ void __noreturn die(struct pt_regs *regs, const char *str)
        if (panic_on_oops)
                panic("Fatal exception: panic_on_oops");
        oops_exit();
-       do_exit(SIGSEGV);
+       make_task_dead(SIGSEGV);
 }
index 20f8e1868853fde3e4f4ed592f042038ba53916f..a4d8c058dd2789b94c9279ee9e87e9c81ea99243 100644 (file)
@@ -175,7 +175,7 @@ void __s390_handle_mcck(void)
                       "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);
        }
 }
 
index cbe3201d4f21cee2f06e414dbe0efec263ef9ca7..01884054aeb2bd308ede5e37d6e985d2b6b92f99 100644 (file)
@@ -57,7 +57,7 @@ void __noreturn die(const char *str, struct pt_regs *regs, long err)
        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)
index 5630e5a395e0d463ba072fb4dd47330e76d565e1..179aabfa712ea06f7e92abe5539fd34b95445e16 100644 (file)
@@ -86,9 +86,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
        }
        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)
index 6863025ed56d272343f3ee6d2b34d50c5349c213..21077821f4272bee42c321167e20ae47ea83a5c8 100644 (file)
@@ -2559,9 +2559,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
        }
        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);
 
index ccb9d32768f31cb33d2101cec17e23d4bd045ae4..7738fad6a85ebed49c80e17a3a04162b39eae38e 100644 (file)
@@ -1248,14 +1248,14 @@ SYM_CODE_START(asm_exc_nmi)
 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
index e38a4cf795d962bbb8312dc6241333b8939a6b8b..f092764579425e62060ebffafac65a2f8de6bb7b 100644 (file)
@@ -1429,7 +1429,7 @@ SYM_CODE_END(ignore_sysret)
 #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
@@ -1438,6 +1438,6 @@ SYM_CODE_START(rewind_stack_do_exit)
        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
index ea4fe192189d565216292468596d83aa276756b1..53de044e565406f5213a105fdefa2a12ebadbd11 100644 (file)
@@ -351,7 +351,7 @@ unsigned long oops_begin(void)
 }
 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)
 {
@@ -386,7 +386,7 @@ 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);
 
index 4b4dbeb2d6125608c01d334335c200c6d4026d04..9345007d474d311429e3b891ab2f1927dc2b03f9 100644 (file)
@@ -552,5 +552,5 @@ void __noreturn die(const char * str, struct pt_regs * regs, long err)
        if (panic_on_oops)
                panic("Fatal exception");
 
-       do_exit(err);
+       make_task_dead(err);
 }
index ba88a69874004260aecf99cd76fd00607621caf9..2d4bbd9c3278e660efb4d8855a6467022e9b21bb 100644 (file)
@@ -59,6 +59,7 @@ extern void sched_post_fork(struct task_struct *p,
 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);
 
index f702a6a63686ea7c463ea5b73a7f5b665bb2d91e..bfa513c5b2271555ba1653b8bfa7a146403754dd 100644 (file)
@@ -884,6 +884,15 @@ void __noreturn do_exit(long code)
 }
 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)
index 21735829b860cac3e197a0564a14a992b12e2289..e6ab5687770bd92b8a4478f74371f15b44d0c4e0 100644 (file)
@@ -168,6 +168,7 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func,
                "panic",
                "do_exit",
                "do_task_dead",
+               "make_task_dead",
                "__module_put_and_exit",
                "complete_and_exit",
                "__reiserfs_panic",
@@ -175,7 +176,7 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func,
                "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",