exception

内核空指针访问一定会panic 吗

不一定会 , 在一般上下文中, 直接访问空指针,执行完oops_end 就会直接退出(虚拟机环境):

async_page_fault —> __do_page_fault —> no_context —> oops_end —> do_exit 让当前进程退出

如果在中断上下文中访问空指针,则会进入panic, 区别就在oops_end 代码中

void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
{
    if (regs && kexec_should_crash(current))
        crash_kexec(regs);  //kdump xxx

    if (!signr)
        return;
    if (in_interrupt())   // 如果是中断上下文,则触发panic
        panic("Fatal exception in interrupt");
    if (panic_on_oops)  // 如果在异常上下文也会
        panic("Fatal exception");

    kasan_unpoison_task_stack(current);
    rewind_stack_do_exit(signr);   // 准备调用do_exit
}
NOKPROBE_SYMBOL(oops_end);