// 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" );
Messung V0.5 in Prozent C=95 H=100 G=97
¤ Dauer der Verarbeitung: 0.2 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland