一、查看 dmesg_TZ.txt中的错误:
Kernel panic - not syncing: CFI failure (target: 0xffffff804323a848)
Call trace:
dump_backtrace.cfi_jt+0x0/0x8
dump_stack_lvl+0x94/0xe0
panic+0x1a0/0x468
cfi_module_add+0x0/0x24
find_check_fn+0x0/0x258
cam_subdev_ioctl+0x21c/0x224 [camera]
cam_req_mgr_close+0x144/0x344 [camera]
v4l2_release+0xd0/0x194
...
从调用栈可以看出,在调用cam_subdev_ioctl函数的时候检查函数参数的时候出错了。
二、Trace32 load 结合代码查看具体位置:

右侧图可以看到:函数出问题的位置在cam_subdev.c的 77行
左侧图中可以看到
①sd_handler=0xFFFFFF804323A848,同dmesg_TZ.txt的信息匹配。
②node结构体的内容有异常,name内容是乱码,正常应该是个字符串

本文分析了一起高通平台相机模块由于CFI failure导致的内核panic问题。通过dmesg日志和Trace32调试,发现在cam_subdev_ioctl函数中对链表节点进行操作时出现问题。进一步研究发现,可能是未正确设置v4l2_subdevdata为NULL导致。通过查看链表节点和cam_subdev结构体,确定问题出在cam-isp模块的unbind函数中,解决方案是在卸载时将相应节点设为NULL。
最低0.47元/天 解锁文章
2440

被折叠的 条评论
为什么被折叠?



