文章 19
评论 1
浏览 92887
自己编译出的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来控制网卡的。


标题:自己编译出的android内核因为开启了CFI导致内核panic
作者:erlkonig
地址:https://erlkonig.tech/articles/2021/10/21/1634831546866.html

记录精彩的程序人生

取消