show_regs doesn't user KERN_CRIT loglevel when called from parisc-terminate1G/show

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've seen this crash twice recently:

Bad Address (null pointer deref?): Code=6 (Instruction TLB miss fault) at addr 00000000e5361d5f
Kernel panic - not syncing: Bad Address (null pointer deref?)

The message indicates parisc_terminate() was from do_page_fault(). It would seem either !mm or
!user_mode(regs).  Might be an exception that wasn't handled by fixup_exception().

In parisc_terminate(), we have:

        printk("\n");
        pr_crit("%s: Code=%d (%s) at addr " RFMT "\n",
                msg, code, trap_name(code), offset);
        show_regs(regs);

        spin_unlock(&terminate_lock);

        /* put soft power button back under hardware control;
         * if the user had pressed it once at any time, the
         * system will shut down immediately right here. */
        pdc_soft_power_button(0);

        /* Call kernel panic() so reboot timeouts work properly
         * FIXME: This function should be on the list of
         * panic notifiers, and we should call panic
         * directly from the location that we wish.
         * e.g. We should not call panic from
         * parisc_terminate, but rather the oter way around.
         * This hack works, prints the panic message twice,
         * and it enables reboot timers!
         */
        panic(msg);

dave@mx3210:~$ cat /proc/sys/kernel/printk
7       4       1       7

Since the regs weren't displayed, this implies that user_mode(regs) is true. Thus I think we have a
user mode fault with no context:

        tsk = current;
        mm = tsk->mm;
        if (!mm)
                goto no_context;

It would be helpful level in show_regs if the printk log level was set to KERN_CRIT when this happens.

Dave

--
John David Anglin  dave.anglin@xxxxxxxx




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux