Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172// SPDX-License-Identifier: GPL-2.0-or-later/* * livepatch-sample.c - Kernel Live Patching Sample Module * * Copyright (C) 2014 Seth Jennings <sjenning@redhat.com> */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>#include <linux/kernel.h>#include <linux/livepatch.h>
/* * This (dumb) live patch overrides the function that prints the * kernel boot cmdline when /proc/cmdline is read. * * Example: * * $ cat /proc/cmdline * <your cmdline> * * $ insmod livepatch-sample.ko * $ cat /proc/cmdline * this has been live patched * * $ echo 0 > /sys/kernel/livepatch/livepatch_sample/enabled * $ cat /proc/cmdline * <your cmdline> */
#include <linux/seq_file.h>static int livepatch_cmdline_proc_show(struct seq_file *m, void *v){ seq_printf(m, "%s\n", "this has been live patched"); return 0;}
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){ return klp_enable_patch(&patch);}
static void livepatch_exit(void){}
module_init(livepatch_init);module_exit(livepatch_exit);MODULE_DESCRIPTION("Kernel Live Patching Sample Module");MODULE_LICENSE("GPL");MODULE_INFO(livepatch, "Y");