by falcon wuzhangjin@gmail.com of TinyLab.org
2014/01/22
最初发表:泰晓科技 – 聚焦嵌入式 Linux,追本溯源,见微知著!
原文链接:Linux内核Section Mismatch详解
评论说明:为更好地聚合大家的讨论,请到上面原文的评论区回复。
Section Mismatch简介
Section Mismatch是非常严重的Bug,可能会导致无法预测的内存访问问题,建议谨慎对待,如果添加的驱动中有类似Warning,可能需要密切关注并解决掉。
下面就该问题的检测、原因、解决思路以及最新前沿进行分析。
Section Mismatch的检测
CONFIG_DEBUG_SECTION_MISMATCH=y
打开上述选项,内核就会调用modpost
检测类似问题。
Section Mismatch的原因
Linux为了减少不必要的内存消耗,对于一些仅仅在内核初始化时使用的资源(包括函数和变量等),会放在init sections中,这些init sections会在内核初始化完成以后被内核Free掉