文章 19
评论 1
浏览 87262
自己编译出的android内核因为开启了CFI导致内核panic

自己编译出的android内核因为开启了CFI导致内核panic

最近编译红米K30ultra的android内核源码,想要添加一些wifi网卡的支持(通过usb连接wifi网卡),需要有cfg80211的支持,结果一直kernel panic。 cat /proc/last_kmsg 通过查看内核日志之后,发现是wext相关的函数出发了CFI(Control Flow Integrity)机制导致的。 一顿搜索后,想了想,android上的内核还是开启clang-cfi比较好。 参考文章: https://outflux.net/slides/2020/lca/cfi.pdf 已经有的patch: https://www.spinics.net/lists/linux-wireless/msg205583.html 为什么下载到的内核源码不是打过补丁的? 问题在cfg80211功能相关的代码中,wext相关的一些函数对参数的类型限制不严格,结果就是启用CFI之后,会出现kernel panic。 一般android也没人去开启cfg80211支持啊,这部分代码之前是不参与编译的,android本身是通过nl80211来控制网卡的。

记录精彩的程序人生