[导读]Linux内核热补丁可以修复正在运行的linux内核,是一种维持线上稳定性不可缺少的措施,现在比较常见的比如kpatch和livepatch。内核热补丁可以修复内核中正在运行的函数,用已修复的函数替换掉内核中存在问题的函数从而达到修复目的。函数替换的思想比较简单,就是在执行旧函数...
Linux 内核热补丁可以修复正在运行的 linux 内核,是一种维持线上稳定性不可缺少的措施,现在比较常见的比如 kpatch 和 livepatch。内核热补丁可以修复内核中正在运行的函数,用已修复的函数替换掉内核中存在问题的函数从而达到修复目的。函数替换的思想比较简单,就是在执行旧函数时绕开它的执行逻辑而跳转到新的函数中,有一种比较简单粗暴的方式,就是将原函数的第一条指令修改为“ jump 目标函数”指令,即直接跳转到新的函数以达到替换目的。那么,问题来了,这么做靠谱吗?直接将原函数的第一条指令修改为 jump 指令,会破坏掉原函数和它的调用者之间的寄存器上下文关系,存在安全隐患!本文会针对该问题进行探索和验证。安全性冲击:问题呈现
对于函数调用,假设存在这样两个函数 funA 和 funB,其中 funA 调用 funB 函数,这里称 funA 为 caller(调用者),funB 为 callee(被调用者),funA 和 funB 都使用了相同的寄存器 R,如下所示:图1 funA 和 funB 都使用了寄存器 R,funA 再次使用 R 时已经被 funB 修改因此,当 funA 再次使用到 R 的数据已经是错误的数据了。如果 funA 在调用 funB 前保存寄存器 R 中的数据,funB 返回后再将数据恢复到 R 中,或者 funB 先保存 R 中原有的数据,然后在返回前恢复,就可以解决这类问题。唯一的调用约定那寄存器该由 caller 还是 callee 来保存?这就需要遵循函数的调用约定(call convention),不同的 ABI 和不同的平台,函数的调用约定是不一样的,对于 Linux 来说,它遵循的是 System V ABI 的 call convention,x86_64 平台下函数调用约定有且只有一种,调用者 caller 和被调用者 callee 需要对相应的寄存器进行保存和恢复操作:- Caller-save registers : RDI, RSI, RDX, RCX, R8, R9, RAX, R10, R11
- Callee-save registers : RBX, RBP, R12, R13, R14, R15
调用约定,gcc 它遵守了吗?设问:当函数实现很简单,只用到了少量寄存器,那没使用到的还需要保存吗?答案:it depends。根据编译选项决定。众所周知,GCC 编译器有 -O0、-O1、-O2 和 -Ox 等编译优化选项,优化范围和深度随 x 增大而增大(-O0是不优化,其中隐含的意思是,它会严格遵循 ABI 中的调用约定,对所有使用的寄存器进行保存和恢复)。Linux 内核选用的都是 -O2 优化。GCC 会选择性的不遵守调用约定,也就是设问里提到的,不需要保存没使用到的寄存器。当【运行时替换】撞见【调用约定】GCC 之所以可以做这个优化,是因为 GCC 高屋建瓴,了解程序的执行流。当它知道 callee,caller 的寄存器分配情况,就会大胆且安全地做各种优化。但是,运行时替换破坏了这个假设,GCC 所掌握的 callee 信息,极有可能是错误的。那么这些优化可能会引发严重问题。这里以一个具体的实例进行详细说明,这是一个用户态的例子( x86_64 平台)://test.c 文件
//编译命令:gcc test.c -o test -O2 (kernel 采用的是 O2 优化选项)
//执行过程:./test
//输入参数:4
#include
#include
#include
#include
#define noinline __attribute__ ((noinline)) //禁止内联
static noinline int c(int x)
{
return x * x * x;
}
static noinline int b(int x)
{
return x;
}
static noinline int newb(int x)
{
return c(x * 2) * x;
}
static noinline int a(int x)
{
int volatile tmp = b(x); // tmp = 8 ** 3 * 4
return x tmp; // return 4(not 8) tmp
}
int main(void)
{
int x;
scanf("%d",
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
在这篇文章中,小编将为大家带来Linux内核的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。
关键字:
嵌入式
Linux
内核
以下内容中,小编将对嵌入式linux内核移植实现方案的相关内容进行着重介绍和阐述,希望本文能帮您增进对嵌入式的了解,和小编一起来看看吧。
关键字:
嵌入式
Linux
内核
上海2022年11月29日 /美通社/ -- 2022年11月4日至6日,具有国际影响力的金融科技经纪商ATFX参加且赞助了2023年“爱丁堡公爵杯”预选赛。此次预选赛是在墨西哥金塔纳罗奥州坎昆月亮宫酒店球场(Hotel...
关键字:
内核
进程
TE
SE
据业内消息,在近日举办的Snapdragon技术峰会中,高通公司公布了新一代定制ARM内核Oryon。
关键字:
高通公司
ARM
内核
Oryon
北京2022年11月15日 /美通社/ -- "双十一"当天,思享无限正式推出拾遗计划,聚焦非遗文化的传播与传承,将传统文化与直播新的媒介语境相融合,让非遗传承者、非遗爱好者在直播平台上共同参与、共同...
关键字:
互联网
内核
数字化
高德智感推出PT系列红外热像仪新品,内核搭载1280x1024非制冷氧化钒红外探测器,率先拥有百万像素的红外热像仪产品。同时测温精度高达正负1摄氏度,热灵敏度NETD不超过55mK,可辨识微小的热差异,并自动追踪全屏最高...
关键字:
红外热像仪
NET
NFC
内核
2022北京马拉松于11月6日开跑。本次北马采用集“数字化注册”、“人脸识别核验”、“AI测温”以及“北京健康宝健康码状态、全程新冠疫苗接种和24小时内核酸检测阴性证明”多验合一的物联网智能终端——声智科技IDA数字哨点...
关键字:
人脸识别
内核
数字化
智能终端
上海2022年11月1日 /美通社/ -- 近日,由上海勃林格殷格翰药业有限公司与华东理工大学药学院合作编写的高等学校通识课精品教材《质量文化导论》正式出版发行。这也是国内首门质量文化课程配套教材。该书的出版有望助力全国...
关键字:
内核
编写
上海, 2022年11月1日 /美通社/ -- 11月1日,坐落于上海市普陀区苏州河畔的艺康大中华区总部新装开启。上海市普陀区副区长肖立、上海第一财经传媒有限公司总经理陈思劼、以及来自普陀区投资促进办公室、长风...
关键字:
BSP
内核
研发中心
北京2022年10月11日 /美通社/ -- 在四川大凉山深处,有一只"凉山黑鹰"少年篮球队:队员平均年龄12岁,平均身高1米3,球队刚成立时,连个像样的球场都没有。然而,凭着一腔热情和惊人天赋,这只...
关键字:
BSP
内核
腾讯
ARM的全称为Advanced RISC Machines,直译为高级精简指令集处理器;RISC即为精简指令集,那么对应的就存在CISC,其为复杂指令集。
关键字:
ARM
内核
SoC
上海2022年9月8日 /美通社/ -- 中国家居人齐聚沪上,点亮行业高质量发展之光。9月6日,家居行业盛事——家居产业高质量发展大会暨"月星之夜"在上海月星国际家居生活MALL举行,数百位...
关键字:
BSP
HID
内核
大赛
上海2022年8月25日 /美通社/ -- 新茶饮下半场,从价格战、产品战、渠道战上升至品牌内核的竞争,打动年轻消费者更需要在审美和品牌价值上做文章。新一代年轻人的...
关键字:
美团
IP
MIDDOT
内核
一直以来,CPU中央处理器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来CPU的相关介绍,详细内容请看下文。
关键字:
CPU
中央处理器
内核
南京2022年8月8日 /美通社/ -- 2022年8月5日,BSiEE本涩于"2022联商网大会"荣获"2021年度高成长连锁品牌"奖项,为品牌发展再赋成长印记。正值契...
关键字:
美的
IP
数字化
内核
上海2022年8月5日 /美通社/ -- 日本院线级精准护肤品牌TAKAMI强势布局中国,品牌天猫官方旗舰店于7月1日重磅亮相,以便捷的线上购买渠道为中国消费者提供更丰富、沉浸的购物体验,持续传递品牌的美肌哲学。这是TA...
关键字:
OS
OTA
内核
大数据
广州2022年7月27日 /美通社/ -- 7月24日晚11:08,功能性护肤品牌溪木源官宣朴树为品牌代言人。品牌卡点朴树生日11·08官宣,心意满满。以官宣为契机,溪木源也迎来品牌升级,以全新品牌理念、全...
关键字:
HEART
内核
创始人
大众
(全球TMT2022年6月9日讯)作为全球第二的服务器厂商,浪潮信息宣布加入Arm SystemReady™ 计划,并通过了Arm®最高级SystemReady SR认证,为行业树立新标杆。 浪潮...
关键字:
ARM
SYSTEM
AD
内核
(全球TMT2022年6月1日讯)根据上海市复工复产相关要求,东方明珠电视塔于6月1日起开园迎客。先期开放259米户外全透明悬空观光廊和90米户外观光廊等部分户外项目,营业时间调整为10:00-20:00。 东方...
关键字:
电梯
内核
控制
测温