if (kexec_should_crash(current))
crash_kexec(regs);
if (in_interrupt())
panic("Fatal exception in interrupt");
if (panic_on_oops)
panic("Fatal exception");
make_task_dead(SIGSEGV);
}
void die_if_kernel(constchar *str, struct pt_regs *regs, long err)
{ if (!user_mode(regs))
die(str, regs, err);
}
/* * try and fix up kernelspace address errors * - userspace errors just cause EFAULT to be returned, resulting in SEGV * - kernel/userspace interfaces cause a jump to an appropriate handler * - other kernel errors are bad
*/ void die_if_no_fixup(constchar *str, struct pt_regs *regs, long err)
{ if (!user_mode(regs)) { conststruct exception_table_entry *fixup;
fixup = search_exception_tables(regs->pc); if (fixup) {
regs->pc = fixup->fixup; return;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.