[Linux内核技术] 内核模块异常函数调用栈不对

发信人: groundzero (牛二), 信区: KernelTech
标 题: 内核模块异常函数调用栈不对
发信站: 水木社区 (Tue Jan 30 10:58:11 2018), 转信

Hi,all

请教个问题,写网卡驱动,有个指针没有初始化,导致异常,打印了函数调用栈,如下:

[ 1498.489185] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 1498.497284] pgd = ffff800971a87000
[ 1498.500680] [00000000] *pgd=0000000000000000[ 1498.504779]
[ 1498.506268] Internal error: Oops: 96000044 [#1] PREEMPT SMP
[ 1498.511837] Modules linked in: net(O+)
[ 1498.515587] CPU: 3 PID: 3583 Comm: insmod Tainted: G O 4.9.35-00007-g7e02f8a #1
[ 1498.524025] Hardware name: LS1046A QDS Board (DT)
[ 1498.528724] task: ffff800972a0d240 task.stack: ffff8009718bc000
[ 1498.534647] PC is at vring_net_find_vqs+0x554/0x6d0 [net]

…………

[ 1499.064694] Call trace:
[ 1499.067133] Exception stack(0xffff8009718bf7a0 to 0xffff8009718bf8d0)
[ 1499.073571] f7a0: ffff800971149800 0001000000000000 ffff8009718bf970 ffff000000c62c1c

…………

[ 1499.148913] [<ffff000000c62c1c>] vring_net_find_vqs+0x554/0x6d0 [net]
[ 1499.155355] [<ffff000000c61594>] vring_net_probe+0x398/0x46c [net]
[ 1499.161538] [<ffff00000855efe0>] local_pci_probe+0x48/0xac
[ 1499.167021] [<ffff000008560320>] pci_device_probe+0xf0/0x140

调用栈报错在vring_net_find_vqs,但实际出错是在最后一个函数的某行
vring_net_find_vqs -----> __vring_net_find_vqs -----> vring_net_setup_vq

确认这些函数都没有内联,为啥调用栈没有打全,编译器优化了?有必要反汇编看下不?

内核 4.9
gcc version 4.9.3

--
《火箭与第三帝国》
gitbook发布
http://ift.tt/2nnpWbj
github项目
http://ift.tt/2BGCwqs

※ 修改:·groundzero 于 Jan 30 11:05:54 2018 修改本文·[FROM: 123.151.195.*]
※ 来源:·水木社区 http://newsmth.net·[FROM: 123.151.195.*]


from 水木社区 电脑技术区十大热门话题 http://ift.tt/2nphvw4
via IFTTT

评论

此博客中的热门博文

丰田将在 2019 东京车展上展出一台超迷你的都市型电动车

[数字家庭] [原创]北京联通IPTV的完美方案

英特尔将推出更多支持 e-SIM 的 modem