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,