原子替换和累积补丁 【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 被正确禁用时才会调用它。
相关文章
|
16天前
|
Linux API C语言
Linux 内核补丁提交的清单 【ChatGPT】
Linux 内核补丁提交的清单 【ChatGPT】
|
16天前
|
开发者
内核维护者手册 - 修改补丁【ChatGPT】
内核维护者手册 - 修改补丁【ChatGPT】
|
15天前
|
安全 网络协议 测试技术
(取消)打补丁回调 【ChatGPT】
(取消)打补丁回调 【ChatGPT】
|
15天前
|
存储 安全 算法
RCU补丁审查清单 【ChatGPT】
RCU补丁审查清单 【ChatGPT】
|
16天前
|
存储 Linux 开发工具
提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
|
1月前
|
人工智能 自然语言处理 搜索推荐
chatgpt这么火,现在AI搜索引擎有哪些呢?
国外AI搜索引擎包括ChatGPT,擅长自然语言处理与内容生成;Google Bard,提供智能个性化搜索体验;Microsoft Bing集成GPT模型增强智能检索;Perplexity AI以简洁答案及文献引用著称;Neeva强调隐私保护与无广告服务。国内方面,天工AI支持多种功能如知识问答与代码编程;腾讯元宝基于混元模型助力内容创造与学习;360AI搜索以精准全面的信息搜索见长;秘塔AI专注提升写作质量和效率;开搜AI搜索提供个性化智能搜索服务。以上引擎均利用先进AI技术提升用户体验。更多详情参阅[AI搜索合集](zhangfeidezhu.com/?page_id=651)。
76 8
chatgpt这么火,现在AI搜索引擎有哪些呢?
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题
HuggingGPT是一个框架,它使用大型语言模型(如ChatGPT)作为控制器来管理和协调Hugging Face上的AI模型,以语言作为通用接口解决多模态和领域的复杂AI任务。
27 0
HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题
|
20天前
|
机器学习/深度学习 人工智能 算法
为什么ChatGPT等AI大模型都是基于Python开发?
为什么ChatGPT等AI大模型都是基于Python开发?
|
30天前
|
人工智能 自然语言处理 Linux
免费ChatGPT4o灵办AI可体验浏览器插件
灵办AI就是您所需的最佳助手!我们为您带来了一款多功能AI工具,ChatGPT4o不仅能为您提供精准翻译,还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI,真正让工作和学习变得轻松高效!一款多功能智能助手,旨在提升工作和学习效率。它提供实时翻译、对话问答、搜索、写作和网页阅读等服务,支持多种浏览器和操作系统,帮助用户随时获取信息,打破语言障碍,优化内容创作和信息处理。
|
1月前
|
Web App开发 人工智能 安全
Gemini vs ChatGPT:谷歌最新的AI和ChatGPT相比,谁更强?
Gemini vs ChatGPT:谷歌最新的AI和ChatGPT相比,谁更强?