test_klp_livepatch.c (1090B)
1// SPDX-License-Identifier: GPL-2.0 2// Copyright (C) 2014 Seth Jennings <sjenning@redhat.com> 3 4#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 5 6#include <linux/module.h> 7#include <linux/kernel.h> 8#include <linux/livepatch.h> 9 10#include <linux/seq_file.h> 11static int livepatch_cmdline_proc_show(struct seq_file *m, void *v) 12{ 13 seq_printf(m, "%s: %s\n", THIS_MODULE->name, 14 "this has been live patched"); 15 return 0; 16} 17 18static struct klp_func funcs[] = { 19 { 20 .old_name = "cmdline_proc_show", 21 .new_func = livepatch_cmdline_proc_show, 22 }, { } 23}; 24 25static struct klp_object objs[] = { 26 { 27 /* name being NULL means vmlinux */ 28 .funcs = funcs, 29 }, { } 30}; 31 32static struct klp_patch patch = { 33 .mod = THIS_MODULE, 34 .objs = objs, 35}; 36 37static int test_klp_livepatch_init(void) 38{ 39 return klp_enable_patch(&patch); 40} 41 42static void test_klp_livepatch_exit(void) 43{ 44} 45 46module_init(test_klp_livepatch_init); 47module_exit(test_klp_livepatch_exit); 48MODULE_LICENSE("GPL"); 49MODULE_INFO(livepatch, "Y"); 50MODULE_AUTHOR("Seth Jennings <sjenning@redhat.com>"); 51MODULE_DESCRIPTION("Livepatch test: livepatch module");