【严重程度】 一般
【特性】 stacktrace
【重现类型】 有条件概率重现
【定位分析】
bugzilla:http://hulk.huawei.com/bugzilla/show_bug.cgi?id=187818
使能CONFIG_PARAVIRT时,native_{save,restore}_fl 的代码
callq *0x0
会在运行时被替换成为调用xen/vsmp的实现或者
pushf; pop %flags // native_save_fl
push %flags; popf // native_restore_fl
对于后者,由于pushf; popf在pop处的栈状态与callq不同,在此处进行推栈时,会使用callq的orc导致推栈失败。
vmcore代码
vmlinux代码
运行时与编译时代的二进制指令不同
触发场景:
arch_local_save_flags();
arch_local_irq_restore(flags);
这两处的指令会被替换为 push xx; pop xx;
当中断发生在pop指令时,在中断内部执行推栈操作即触发问题
【影响评估及测试建议】
影响性分析:
1 错误栈地址上没有代码段ip地址,推栈失败直接退出
2 错误栈地址上有代码段ip地址,按错误的栈信息继续推栈直到推栈失败退出
3 错误推栈路径上有按照pt_regs orc推栈的代码段ip地址,按照pt_regs读取下一个sp,推栈方向错误报
WARNING: stack going in the wrong direction? at xxx
【对外部影响描述】 无
Hi zhixiuzhou, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @YangYingliang , @成坚 (CHENG Jian) , @jiaoff , @zhengzengkai , @刘勇强 , @wangxiongfeng , @朱科潜 , @WangShaoBo , @lujialin , @wuxu_buque , @Xu Kuohai , @冷嘲啊 , @Lingmingqiang , @yuzenghui , @juntian , @OSSIM , @陈结松 , @whoisxxx , @koulihong , @刘恺 , @hanjun-guo , @woqidaideshi , @Chiqijun , @Kefeng , @ThunderTown , @AlexGuo , @kylin-mayukun , @Zheng Zucheng , @柳歆 , @Jackie Liu , @zhujianwei001 , @郑振鹏 , @SuperSix173 , @colyli , @Zhang Yi , @htforge , @Qiuuuuu , @Yuehaibing , @xiehaocheng , @guzitao , @CTC-Xibo.Wang , @zhanghongchen , @chen wei , @Jason Zeng , @苟浩 , @DuanqiangWen , @georgeguo , @毛泓博 , @AllenShi , @zhangjialin , @Xie XiuQi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论