[发明专利]一种内核故障注入方法及电子设备有效
申请号: | 201410507741.9 | 申请日: | 2014-09-28 |
公开(公告)号: | CN105528284B | 公开(公告)日: | 2018-09-28 |
发明(设计)人: | 崔庆明;王平;王新宇 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内核 故障 注入 方法 电子设备 | ||
本发明公开了一种内核故障注入方法及电子设备,用于解决故障注入的等待时间较长的技术问题。内核注入方法包括:在加载到内存中的内核指令集合中有指令被内核动态探针Kprobes结构体中的断点指令替换时,处理器在执行所述断点指令时,转向执行所述Kprobes结构体中与所述断点指令关联的回调函数;所述处理器在执行完所述回调函数时,转向执行被替换的指令所在函数返回后的下一条内核指令。
技术领域
本发明涉及计算机领域,特别涉及一种内核故障注入方法及电子设备。
背景技术
目前,Linux系统应用广泛,在针对Linux内核进行应用程序开发时,检验应用程序对Linux内核故障的容错机制的有效性非常重要,在Linux内核中进行故障注入是必不可少的环节。但是,Linux系统的开发者出于保证内核代码正确性的考虑,不愿意在Linux内核源代码树中加入一个调试器,以避免开发者通过内核中的调试器引入不良的修正,所以对Linux内核进行故障注入一直是个棘手的问题。
内核动态探针(Kernel Dynamic Probes,Kprobes)技术的出现有效解决了Linux系统的内核故障注入问题,提高了内核故障注入的效率。参见图1,其基本工作机制为:首先,注册Kprobes结构体,将用户指定的探测点处的内核指令替换为断点指令,该被替换的内核指令即为被探测的指令,然后把一个用户定义的回调函数关联到该断点指令,当处理器执行到该断点指令时,处理器将转而执行与断点指令相关联的回调函数,该回调函数执行时将模拟对应的内核故障,在回调函数执行完后,返回执行被探测的指令,继续正常的代码路径的执行,整个故障注入过程中无需对Linux内核频繁编译和启动。
但是,现有技术中上述故障注入方法存在故障注入的等待时间较长的问题,使得整个应用程序开发周期延长。
发明内容
本发明实施例提供一种内核故障注入方法及电子设备,用于解决故障注入的等待时间较长的技术问题。
第一方面,本发明实施例提供了一种内核故障注入方法,所述方法包括:
在加载到内存中的内核指令集合中有指令被内核动态探针Kprobes结构体中的断点指令替换时,处理器在执行所述断点指令时,转向执行所述Kprobes结构体中与所述断点指令关联的回调函数;
所述处理器在执行完所述回调函数时,转向执行被替换的指令所在函数返回后的下一条内核指令。
结合第一方面,在第一方面的第一种可能的实现方式中,处理器执行所述Kprobes结构体中与所述断点指令关联的回调函数,包括:
所述处理器将所述回调函数中设定的错误状态码写入数据寄存器。
结合第一方面,在第一方面的第二种可能的实现方式中,处理器执行所述Kprobes结构体中与所述断点指令关联的回调函数,包括:
所述处理器读取所述Kprobes结构体中保存的所述被替换的指令的数据返回位置的位置信息,并确定出所述数据返回位置;
所述处理器生成大小不大于所述数据返回位置的存储容量的混淆数据,并将所述混淆数据写入所述数据返回位置。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述处理器生成大小不大于所述数据返回位置的存储容量的混淆数据,包括:
随机生成大小不大于所述数据返回位置的存储容量的所述混淆数据;或者
从设定混淆数据中提取小于所述数据返回位置的存储容量的部分作为所述混淆数据。
第二方面,本发明实施例还提供了一种内核故障注入方法,所述方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410507741.9/2.html,转载请声明来源钻瓜专利网。