Panic in quirk_usb_early_handoff
Ard Biesheuvel
ard.biesheuvel at linaro.org
Sat Mar 4 00:07:44 PST 2017
On 4 March 2017 at 00:24, Mason <slash.tmp at free.fr> wrote:
> On 03/03/2017 20:02, Robin Murphy wrote:
>
>> On 03/03/17 17:15, Mason wrote:
>>
>>> [ 1.261813] Unable to handle kernel paging request at virtual address d08611e4
>>> [ 1.269167] pgd = c0004000
>>> [ 1.271979] [d08611e4] *pgd=8f804811, *pte=00000000, *ppte=00000000
>>> [ 1.278394] Internal error: Oops: 7 [#1] PREEMPT SMP ARM
>>> [ 1.283815] Modules linked in:
>>> [ 1.286970] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.7-1-rc2 #157
>>> [ 1.293614] Hardware name: Sigma Tango DT
>>> [ 1.297726] task: cf82c9c0 task.stack: cf838000
>>> [ 1.302364] PC is at quirk_usb_early_handoff+0x3e8/0x790
>>> [ 1.307790] LR is at ioremap_page_range+0xf8/0x1a8
>>> [ 1.312688] pc : [<c039fe44>] lr : [<c02d0a10>] psr: 000e0013
>>> [ 1.312688] sp : cf839d78 ip : 00000000 fp : cf839e38
>>> [ 1.324399] r10: c10248a0 r9 : 00000000 r8 : d08611e4
>>> [ 1.329733] r7 : d084e000 r6 : 00002000 r5 : 000c0300 r4 : cfb4e800
>>> [ 1.336377] r3 : 000131e4 r2 : 00000000 r1 : 91001e13 r0 : d084e000
>>
>> ...and again. And always at the same PC, too.
>
> By the way, isn't LR supposed to point to the caller of the
> current function? ("LR is at ioremap_page_range")
>
> If so, why does it not appear in the back trace?
>
lr is supposed to point to the return address at function entry. After
that, all bets are off, really, since ARM usually pops the return
address from the stack straight into the pc register. So in this case,
it looks like it still contains the address that the most recent leaf
function returned to (or another function that actually restores the
return address into lr before branching to it). But it could easily
contain garbage as well.
More information about the linux-arm-kernel
mailing list