Hi all,
最近遇到一个kernel panic的问题,困扰了很久,恳请大神解惑,谢谢!
我的环境是ARM CA7单核,Linux3.10.
我加了一些打印,发现出错的地方在mm/slub.c的get_freepointer函数里(Unable to handle kernel paging request at virtual address ffffffe0)
于是跟踪了一下调用它的地方,最终发现在函数slab_alloc_node里:
static __always_inline void *slab_alloc_node(struct kmem_cache *s,
gfp_t gfpflags, int node, unsigned long addr)
{
......
preempt_disable();
c = __this_cpu_ptr(s->cpu_slab);
/*
* The transaction ids are globally unique per cpu and per operation on
* a per cpu queue. Thus they can be guarantee that the cmpxchg_double
* occurs on the right processor and that there was no operation on the
* linked list in between.
*/
tid = c->tid;
preempt_enable();