rcu_read_unlock导致内核崩溃

时间:2017-01-13 07:19:01

标签: linux kernel

有一个内核恐慌。

我使用addr2line来解析地址,它很高兴if(t-> rcu_read_lock_nesting!= 1)。我不明白为什么内核pannic hanppen在这个地方,有没有办法找出真正的问题在哪里

    void __rcu_read_unlock(void)
    {
        struct task_struct *t = current;

        if (t->rcu_read_lock_nesting != 1) {
        ...
    }

/home/liuliming/g1s/common/kernel/rcupdate.c:83
/home/liuliming/g1s/common/kernel/notifier.c:185
/home/liuliming/g1s/common/kernel/notifier.c:192
/home/liuliming/g1s/common/kernel/cpu/idle.c:92

[    8.171483@2] pgd = c0004000
[    8.174347@2] [000001c0] *pgd=00000000
[    8.178084@2] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[    8.183552@2] Modules linked in:
[    8.186767@2] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 3.10.33 #2
[    8.192933@2] task: e1663300 ti: e168e000 task.ti: e168e000
[    8.198496@2] PC is at __rcu_read_unlock+0x14/0x50
[    8.203269@2] LR is at __atomic_notifier_call_chain+0x40/0x4c
[    8.208997@2] pc : [<c0046cd4>]    lr : [<c004ec98>]    psr: 60000193
[    8.208997@2] sp : e168ffb8  ip : 00000000  fp : 00000000
[    8.220806@2] r10: 00000001  r9 : 414fc091  r8 : c0a358d0
[    8.226190@2] r7 : 00000001  r6 : 00000000  r5 : ffffffff  r4 : 00000000
[    8.232877@2] r3 : e168e000  r2 : e168ffb8  r1 : 00000001  r0 : 00000000
[    8.239565@2] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    8.247119@2] Control: 10c5387d  Table: 0020404a  DAC: 00000015

    [    8.716495@2] [<c0046cd4>] (__rcu_read_unlock+0x14/0x50) from [<c004ec98>] (__atomic_notifier_call_chain+0x40/0x4c)
[    8.726910@2] [<c004ec98>] (__atomic_notifier_call_chain+0x40/0x4c) from [<c004ecbc>] (atomic_notifier_call_chain+0x18/0x20)
[    8.738115@2] [<c004ecbc>] (atomic_notifier_call_chain+0x18/0x20) from [<c006ac00>] (cpu_startup_entry+0x80/0x140)
[    8.748446@2] [<c006ac00>] (cpu_startup_entry+0x80/0x140) from [<00847dc4>] (0x847dc4)
[    8.756346@2] Code: e1a0200d e3c23d7f e3c3303f e593400c (e59431c0) 

0 个答案:

没有答案