原子替换和累积补丁 【ChatGPT】

简介: 原子替换和累积补丁 【ChatGPT】

原子替换和累积补丁

在 livepatch 之间可能存在依赖关系。如果多个补丁需要对相同的函数进行不同的更改,那么我们需要定义补丁安装的顺序。并且来自任何更新的 livepatch 的函数实现必须建立在旧的 livepatch 的基础之上。

这可能会成为一个维护噩梦,特别是当更多的补丁以不同的方式修改了同一个函数时。

一个优雅的解决方案是使用名为“原子替换”的功能。它允许创建所谓的“累积补丁”。它们包括所有旧的 livepatch 中所需的所有更改,并在一个转换中完全替换它们。

用法

可以通过在 struct klp_patch 中设置 "replace" 标志来启用原子替换,例如:

static struct klp_patch patch = {
        .mod = THIS_MODULE,
        .objs = objs,
        .replace = true,
};

然后所有进程都会迁移到仅使用新补丁的代码。一旦转换完成,所有旧的补丁将自动禁用。

Ftrace 处理程序会自动从不再被新累积补丁修改的函数中移除。

因此,livepatch 作者可能只需维护一个累积补丁的源代码。这有助于在添加或删除各种修复或功能时保持补丁的一致性。

用户在转换完成后可以只保留系统上安装的最后一个补丁。这有助于清晰地看到实际使用的代码。此外,livepatch 可能被视为修改内核行为的“普通”模块。唯一的区别是它可以在不破坏功能的情况下在运行时进行更新。

特点

原子替换允许:

  • 在上一个补丁中原子地恢复一些函数,同时升级其他函数。
  • 消除因不再被修补的函数的核心重定向而导致的性能影响。
  • 减少用户对 livepatch 之间依赖关系的困惑。

限制

  • 一旦操作完成,没有直接的方法来撤销它并原子地恢复替换的补丁。
  • 一个良好的实践是在任何发布的 livepatch 中设置 .replace 标志。然后重新添加一个旧的 livepatch 相当于降级到该补丁。只要 livepatch 在 (取消)打补丁回调或 module_init() 或 module_exit() 函数中不做额外的修改,这是安全的。
  • 还要注意,只有在转换没有被强制的情况下,才能删除和重新加载替换的补丁。
  • 只有来自 累积 livepatch 的 (取消)打补丁回调会被执行。来自替换的补丁的任何回调都会被忽略。
  • 结果,通过旧的累积补丁替换新的累积补丁可能是危险的。旧的 livepatch 可能不提供必要的回调。
  • 这在某些情况下可能被视为限制。但在许多其他情况下,这会使生活变得更加轻松。只有新的累积 livepatch 知道添加/删除了什么修复/功能,以及对于平稳转换需要什么特殊操作。
  • 总之,如果调用了所有启用的补丁的回调,那么考虑各种回调的顺序和它们的交互将是一场噩梦。
  • 没有对影子变量的特殊处理。Livepatch 作者必须创建自己的规则,如何将它们从一个累积补丁传递到另一个。特别是它们不应该在 module_exit() 函数中盲目地移除它们。
  • 一个良好的实践可能是在后取消打补丁回调中移除影子变量。只有在 livepatch 被正确禁用时才会调用它。
相关文章
|
5月前
|
开发者
内核维护者手册 - 修改补丁【ChatGPT】
内核维护者手册 - 修改补丁【ChatGPT】
|
5月前
|
Linux API C语言
Linux 内核补丁提交的清单 【ChatGPT】
Linux 内核补丁提交的清单 【ChatGPT】
|
5月前
|
安全 网络协议 测试技术
(取消)打补丁回调 【ChatGPT】
(取消)打补丁回调 【ChatGPT】
|
5月前
|
存储 安全 算法
RCU补丁审查清单 【ChatGPT】
RCU补丁审查清单 【ChatGPT】
|
5月前
|
存储 Linux 开发工具
提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
哈佛推出全新类ChatGPT癌症诊断AI,登上Nature!准确率高达96%
哈佛大学研究团队开发的新型AI模型CHIEF,在《自然》期刊发表,癌症诊断准确率达96%。CHIEF基于深度学习,能自动识别、分类癌症并预测生存期,具高准确性、多任务能力和泛化性。它结合病理图像与基因组学等数据,显著提升诊断效率和个性化治疗水平,有望改善医疗资源不平等。但数据隐私和临床效果验证仍是挑战。论文见:https://www.nature.com/articles/s41586-024-07894-z
169 101
|
5天前
|
存储 人工智能 API
ChatGPT-on-WeChat:Star32.4k, DeepSeek加持!这款开源神器秒变AI助手,聊天体验直接起飞!
嗨,大家好,我是小华同学。今天为大家介绍一款结合DeepSeek引擎的开源项目——ChatGPT-on-WeChat,由开发者zhayujie打造。它将微信变成智能AI助手,支持文本、图片、语音对话,具备定时提醒、天气查询等扩展功能,完全开源且易于定制。项目地址:https://github.com/zhayujie/chatgpt-on-wechat。关注我们,获取更多优质开源项目和高效学习方法。
98 11
|
6天前
|
人工智能 自然语言处理 算法
DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?
DeepSeek VS ChatGPT:DeepSeek以开源黑马姿态崛起,凭借低成本、高性能的「DeepSeek-V3」和专为深度推理设计的「DeepSeek-R1」,成为中小开发者的首选。而ChatGPT则较贵。 然而,AI依赖也带来隐忧,长期使用可能导致记忆衰退和“脑雾”现象。为此,推荐Neuriva解决方案,专注力提升30%,记忆留存率提升2.1倍,助力人类在AI时代保持脑力巅峰。 DeepSeek赢在技术普惠,ChatGPT胜于生态构建,人类的关键在于平衡AI与脑力健康,实现“双核驱动”突破极限!
135 7
|
2月前
|
人工智能 搜索推荐 iOS开发
OpenAI推出适用于iPhone的ChatGPT,与Apple实现具有里程碑意义的AI整合
OpenAI推出适用于iPhone的ChatGPT,与Apple实现具有里程碑意义的AI整合
|
6月前
|
人工智能 自然语言处理 搜索推荐
chatgpt这么火,现在AI搜索引擎有哪些呢?
国外AI搜索引擎包括ChatGPT,擅长自然语言处理与内容生成;Google Bard,提供智能个性化搜索体验;Microsoft Bing集成GPT模型增强智能检索;Perplexity AI以简洁答案及文献引用著称;Neeva强调隐私保护与无广告服务。国内方面,天工AI支持多种功能如知识问答与代码编程;腾讯元宝基于混元模型助力内容创造与学习;360AI搜索以精准全面的信息搜索见长;秘塔AI专注提升写作质量和效率;开搜AI搜索提供个性化智能搜索服务。以上引擎均利用先进AI技术提升用户体验。更多详情参阅[AI搜索合集](zhangfeidezhu.com/?page_id=651)。
184 8
chatgpt这么火,现在AI搜索引擎有哪些呢?