Skip to content
Snippets Groups Projects
Select Git revision
  • 0862ca422b79cb5aa70823ee0f07f6b468f86070
  • master default
  • android-container
  • nanopc-t4
  • for-kernelci
  • WIP-syscall
  • v4.16-rc5
  • v4.16-rc4
  • v4.16-rc3
  • v4.16-rc2
  • v4.16-rc1
  • v4.15
  • v4.15-rc9
  • v4.15-rc8
  • v4.15-rc7
  • v4.15-rc6
  • v4.15-rc5
  • v4.15-rc4
  • v4.15-rc3
  • v4.15-rc2
  • v4.15-rc1
  • v4.14
  • v4.14-rc8
  • v4.14-rc7
  • v4.14-rc6
  • v4.14-rc5
26 results

panic.c

  • panic.c 16.99 KiB
    /*
     *  linux/kernel/panic.c
     *
     *  Copyright (C) 1991, 1992  Linus Torvalds
     */
    
    /*
     * This function is used through-out the kernel (including mm and fs)
     * to indicate a major problem.
     */
    #include <linux/debug_locks.h>
    #include <linux/sched/debug.h>
    #include <linux/interrupt.h>
    #include <linux/kmsg_dump.h>
    #include <linux/kallsyms.h>
    #include <linux/notifier.h>
    #include <linux/module.h>
    #include <linux/random.h>
    #include <linux/ftrace.h>
    #include <linux/reboot.h>
    #include <linux/delay.h>
    #include <linux/kexec.h>
    #include <linux/sched.h>
    #include <linux/sysrq.h>
    #include <linux/init.h>
    #include <linux/nmi.h>
    #include <linux/console.h>
    #include <linux/bug.h>
    #include <linux/ratelimit.h>
    #include <linux/debugfs.h>
    #include <asm/sections.h>
    
    #define PANIC_TIMER_STEP 100
    #define PANIC_BLINK_SPD 18
    
    int panic_on_oops = CONFIG_PANIC_ON_OOPS_VALUE;
    static unsigned long tainted_mask;
    static int pause_on_oops;
    static int pause_on_oops_flag;
    static DEFINE_SPINLOCK(pause_on_oops_lock);
    bool crash_kexec_post_notifiers;
    int panic_on_warn __read_mostly;
    
    int panic_timeout = CONFIG_PANIC_TIMEOUT;
    EXPORT_SYMBOL_GPL(panic_timeout);
    
    ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
    
    EXPORT_SYMBOL(panic_notifier_list);
    
    static long no_blink(int state)
    {
    	return 0;
    }
    
    /* Returns how long it waited in ms */
    long (*panic_blink)(int state);
    EXPORT_SYMBOL(panic_blink);
    
    /*
     * Stop ourself in panic -- architecture code may override this
     */
    void __weak panic_smp_self_stop(void)
    {
    	while (1)
    		cpu_relax();
    }
    
    /*
     * Stop ourselves in NMI context if another CPU has already panicked. Arch code