主线补丁68aaee147e597b495622b7c9038e5922c7c61f57("mm: memcontrol: fix potential oom_lock recursion deadlock")回合
内存申请失败oom流程中,获取了oom_lock锁之后,调用mem_cgroup_print_oom_meminfo,该函数调用memory_stat_format使用kmalloc申请了内存,此时如果申请失败,触发oom,会导致再次尝试获取oom_lock使得OOM killer失败,此时会触发一个活锁(livelock)状态。此外文件系统中申请内存使用GFP_KERNEL,可能导致死锁。因为oom过程中(持有oom_lock)调用kmalloc,kmalloc调用了fs_reclaim_acquire。文件系统持有fs_reclaim_acquire时发生内存申请失败,会导致死锁。
本质问题均为OOM处理过程中,mem_cgroup_print_oom_meminfo使用kmalloc GFP_KERNEL申请了内存。
该补丁使用static数组来存放数据,避免内存申请的过程。
冲突为修改代码一些上下文与主线不同,有一点比较关键,mem_cgroup_print_oom_meminfo中调用了mem_cgroup_print_memfs_info这个函数,为自研代码,也存在使用kmalloc申请,新增自研补丁修复。
Hi airsola0711, 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 , @Xie XiuQi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论