linux/lib/livepatch/test_klp_livepatch.c
<<
>>
Prefs
   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");
  52