Kernel 4.0 Live-Patching 代码分析1
来源:互联网 发布:mac卸载safefinder 编辑:程序博客网 时间:2024/06/08 13:47
Linux 内核4.0增加了Live Patching的功能。这个功能解决了之前各个厂商自己维护一个打热补丁的实现方式的问题。得到了Red Hat和Suse等厂商的支持,为打热补丁提供了一种统一的解决方案。目前代码并不多,看了下Patch只有1000来行。主要使用了ftrace的函数来进行live patch的过程。最近闲来无事就研究下吧。
从sample patch来看live patching实现的一个功能。
+static struct klp_func funcs[] = {
+ {
+ .old_name = "cmdline_proc_show",
+ .new_func = livepatch_cmdline_proc_show,
+ }, { }
+};
+
+static struct klp_object objs[] = {
+ {
+ /* name being NULL means vmlinux */
+ .funcs = funcs,
+ }, { }
+};
+
+static struct klp_patch patch = {
+ .mod = THIS_MODULE,
+ .objs = objs,
+};
+
+static int livepatch_init(void)
+{
+ int ret;
+
+ ret = klp_register_patch(&patch);
+ if (ret)
+ return ret;
+ ret = klp_enable_patch(&patch);
+ if (ret) {
+ WARN_ON(klp_unregister_patch(&patch));
+ return ret;
+ }
+ return 0;
+}
把大部分无关的代码过滤掉就是上面的代码。非常简单。一个klp_register_patch和一个klp_enable_patch就可以让你的代码patch过程完成。其实live-patching还支持其他的一些patch方式。后面在分析live-patching代码的过程中会讲到。
0 0
- Kernel 4.0 Live-Patching 代码分析1
- Kernel Live-patching (by quqi99)
- kernel 网桥代码分析
- kernel 网桥代码分析
- kernel 网桥代码分析
- kernel网桥代码分析
- kernel 网桥代码分析
- kernel 网桥代码分析
- kernel 网桥代码分析
- Linux Kernel代码分段分析尝试
- Linux Kernel代码分段分析尝试
- Linux-kernel 网桥代码分析(一)
- Linux-kernel网桥代码分析(二)
- Linux-kernel 网桥代码分析(一)
- Linux-kernel网桥代码分析(二)
- libsvm代码阅读:关于Kernel类分析
- Linux-kernel 网桥代码分析
- jz2440 kernel 移植(启动代码分析)
- 黑马程序员_Java_IO流(一)
- 黑马程序员_Java_IO流(二)
- SPOJ QTREE Query on a tree
- 牛腩新闻系统(二)——原型图、数据库文档
- **黑马程序员_Java_多线程**
- Kernel 4.0 Live-Patching 代码分析1
- WeX5界面模块化的使用—如何显示声明依赖
- 自定义dialog
- Android 如何在自定义界面上启用输入法 (How to enable inputmethod for the custom UI)
- VS2010程序打包操作(超详细的)
- 解决favicon.ico无法显示的问题
- 黑马程序员_Java_网络编程(一)
- 黑马程序员_Java_网络编程(二)
- 手机电池保护教程