Re: [PATCH] Fix BREAK handling in sunsab serial driver

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

 



On Tuesday 05 August 2014 01:04:23 David Miller wrote:
> From: Christopher Alexander Tobias Schulze <cat.schulze@xxxxxxxxxxxxx>
> Date: Sun, 3 Aug 2014 14:25:35 +0200
> 
> > IIRC it was a null pointer dereference in perf_event_print_debug(),
> > but I am not quite sure, as we quickly disabled this call to continue
> > working (getting BREAK on the serial console to work was top priority
> > then). We will have to wait for Norman to retrieve this information -
> > he is currently on vacation, however, so it will take another week.
> 
> If it's in perf_event_print_debug() there isn't much to check.
> 
> sparc_pmu is derefernced in the loops, but the first thing this
> function does is check it against NULL and return immediately
> if it is NULL.
> 
> pcr_ops is dereferenced also, but pcr_ops should never be NULL
> if sparc_pmu is not NULL.
> 
> Hmmm... that's setup by pcr_arch_init() which I only see being
> invoked by smp_cpus_done().
> 
> Is this a uniprocessor build?
> 
> 

My colleague has returned from his vacation and provided me the serial
console logs which contain the stacktrace for the crash in
perf_event_print_debug() that was triggered by the register dump request
using SysRq:

[  192.934865] Unable to handle kernel NULL pointer dereference
[  193.002524] tsk->{mm,active_mm}->context = 0000000000001009
[  193.069192] tsk->{mm,active_mm}->pgd = fffffc003aec2000
[  193.131694]               \|/ ____ \|/
[  193.131694]               "@'/ .. \`@"
[  193.131694]               /_| \__/ |_\
[  193.131694]                  \__U_/
[  193.307769] swapper(0): Oops [#1]
[  193.347330] CPU: 0 PID: 0 Comm: swapper Not tainted 3.13.10 #4
[  193.417122] task: 000000000092d7e0 ti: 0000000000918000 task.ti: 0000000000918000
[  193.506717] TSTATE: 0000009980e01604 TPC: 000000000044d630 TNPC: 000000000044d634 Y: 00000000    Not tainted
[  193.624441] TPC: <perf_event_print_debug+0x50/0x100>
[  193.683796] g0: 0000000001016460 g1: 0000000000000000 g2: 0000000000000007 g3: 0000000000000001
[  193.787975] g4: 000000000092d7e0 g5: 0000000000000038 g6: 0000000000918000 g7: 0000000000000720
[  193.892144] o0: 0000000000000000 o1: 000000000089d910 o2: 0000000000000000 o3: 0000000000001fff
[  193.996313] o4: 000000000089d8a0 o5: 0000000000000010 sp: fffffc003febb231 ret_pc: 000000000044d610
[  194.104653] RPC: <perf_event_print_debug+0x30/0x100>
[  194.164018] l0: 0000000000001000 l1: 00000000ffff5511 l2: 00000000004208b0 l3: 0000000000000000
[  194.268197] l4: 0000000000001000 l5: 0000000000000004 l6: 0000000000918000 l7: 0000000080001004
[  194.372368] i0: 0000000000000070 i1: 00000000009cd800 i2: 000000000089d300 i3: 00000000009240d0
[  194.476537] i4: 000000000000000e i5: 0000000000000001 i6: fffffc003febb2f1 i7: 000000000068b2a0
[  194.580715] I7: <__handle_sysrq+0xc0/0x1a0>
[  194.630694] Call Trace:
[  194.659865]  [000000000068b2a0] __handle_sysrq+0xc0/0x1a0
[  194.724458]  [00000000006a5908] sunsab_interrupt+0x468/0x8a0
[  194.792165]  [0000000000498d18] handle_irq_event_percpu+0x78/0x220
[  194.866125]  [0000000000498ee8] handle_irq_event+0x28/0x60
[  194.931754]  [000000000049b7dc] handle_fasteoi_irq+0xfc/0x1a0
[  195.000503]  [0000000000498560] generic_handle_irq+0x40/0x60
[  195.068214]  [000000000042b5d4] handler_irq+0x94/0xc0
[  195.128636]  [00000000004208b4] tl0_irq5+0x14/0x20
[  195.185924]  [000000000042bbfc] arch_cpu_idle+0x5c/0x80
[  195.248426]  [000000000049843c] cpu_startup_entry+0x19c/0x240
[  195.317179]  [000000000099a988] start_kernel+0x4f0/0x520
[  195.380724]  [00000000007e74ac] tlb_fixup_done+0x80/0x94
[  195.444263]  [0000000000000000]           (null)
[  195.499473] Disabling lock debugging due to kernel taint
[  195.563022] Caller[000000000068b2a0]: __handle_sysrq+0xc0/0x1a0
[  195.633855] Caller[00000000006a5908]: sunsab_interrupt+0x468/0x8a0
[  195.707816] Caller[0000000000498d18]: handle_irq_event_percpu+0x78/0x220
[  195.788028] Caller[0000000000498ee8]: handle_irq_event+0x28/0x60
[  195.859905] Caller[000000000049b7dc]: handle_fasteoi_irq+0xfc/0x1a0
[  195.934905] Caller[0000000000498560]: generic_handle_irq+0x40/0x60
[  196.008866] Caller[000000000042b5d4]: handler_irq+0x94/0xc0
[  196.075534] Caller[00000000004208b4]: tl0_irq5+0x14/0x20
[  196.139079] Caller[000000000042bbb8]: arch_cpu_idle+0x18/0x80
[  196.207831] Caller[000000000049843c]: cpu_startup_entry+0x19c/0x240
[  196.282833] Caller[000000000099a988]: start_kernel+0x4f0/0x520
[  196.352626] Caller[00000000007e74ac]: tlb_fixup_done+0x80/0x94
[  196.422418] Caller[0000000000000000]:           (null)
[  196.483877] Instruction DUMP: 953f6000  ba076001  9010000a <c2584000> 9fc04000  d477a7f7  d45fa7f7  96100008  92102000 
[  196.613045] Kernel panic - not syncing: Aiee, killing interrupt handler!
[  196.693264] Press Stop-A (L1-A) to return to the boot prom

Unfortunately, this is less information than I hoped: the only new information is

[  193.624441] TPC: <perf_event_print_debug+0x50/0x100>
[  194.104653] RPC: <perf_event_print_debug+0x30/0x100>

and I am not able to provide any further details (e.g., disassembly of the code
at that location).

The machine is a uniprocessor system. The kernel configuration was taken from
Debian and slightly modified, but I am not sure whether it was based on an SMP
kernel package or not (I would guess that it was a uniprocessor kernel, however).

I hope this can provide at least some further information to you.

Regards,
Alexander Schulze
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux