Re: [kpatch] [PATCHv7 3/3] samples: add sample live patching module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 23, 2014 at 05:20:35PM +0100, Udo Seidel wrote:
> 
> Hi,
> 
> a very minor thing. The command line example is missing one line. Sorry if
> this is too German. :-)
> Udo
> 
> --- samples/livepatch/livepatch-sample.c.ORG    2014-12-23
> 17:17:53.289523448 +0100
> +++ samples/livepatch/livepatch-sample.c        2014-12-23
> 17:18:14.858733204 +0100
> @@ -32,6 +32,7 @@
>   * $ cat /proc/cmdline
>   * this has been live patched
>   * $ echo 0 > /sys/kernel/livepatch/klp_sample/enabled
> + * $ cat /proc/cmdline

Good catch :)

Acked-by: Seth Jennings <sjenning@xxxxxxxxxx>

>   * <your cmdline>
>   */
> 
> 
> On Tue, 16 Dec 2014, Seth Jennings wrote:
> 
> >Add a sample live patching module.
> >
> >Signed-off-by: Seth Jennings <sjenning@xxxxxxxxxx>
> >---
> >MAINTAINERS                          |  1 +
> >samples/Kconfig                      |  7 +++
> >samples/Makefile                     |  2 +-
> >samples/livepatch/Makefile           |  1 +
> >samples/livepatch/livepatch-sample.c | 87 ++++++++++++++++++++++++++++++++++++
> >5 files changed, 97 insertions(+), 1 deletion(-)
> >create mode 100644 samples/livepatch/Makefile
> >create mode 100644 samples/livepatch/livepatch-sample.c
> >
> >diff --git a/MAINTAINERS b/MAINTAINERS
> >index 94f9f69..15c0929d 100644
> >--- a/MAINTAINERS
> >+++ b/MAINTAINERS
> >@@ -5788,6 +5788,7 @@ F:	include/linux/livepatch.h
> >F:	arch/x86/include/asm/livepatch.h
> >F:	arch/x86/kernel/livepatch.c
> >F:	Documentation/ABI/testing/sysfs-kernel-livepatch
> >+F:	samples/livepatch/
> >L:	live-patching@xxxxxxxxxxxxxxx
> >
> >LLC (802.2)
> >diff --git a/samples/Kconfig b/samples/Kconfig
> >index 6181c2c..0aed20d 100644
> >--- a/samples/Kconfig
> >+++ b/samples/Kconfig
> >@@ -63,4 +63,11 @@ config SAMPLE_RPMSG_CLIENT
> >	  to communicate with an AMP-configured remote processor over
> >	  the rpmsg bus.
> >
> >+config SAMPLE_LIVE_PATCHING
> >+	tristate "Build live patching sample -- loadable modules only"
> >+	depends on LIVE_PATCHING && m
> >+	help
> >+	  Builds a sample live patch that replaces the procfs handler
> >+	  for /proc/cmdline to print "this has been live patched".
> >+
> >endif # SAMPLES
> >diff --git a/samples/Makefile b/samples/Makefile
> >index 1a60c62..f00257b 100644
> >--- a/samples/Makefile
> >+++ b/samples/Makefile
> >@@ -1,4 +1,4 @@
> ># Makefile for Linux samples code
> >
> >-obj-$(CONFIG_SAMPLES)	+= kobject/ kprobes/ trace_events/ \
> >+obj-$(CONFIG_SAMPLES)	+= kobject/ kprobes/ trace_events/ livepatch/ \
> >			   hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/
> >diff --git a/samples/livepatch/Makefile b/samples/livepatch/Makefile
> >new file mode 100644
> >index 0000000..7f1cdc1
> >--- /dev/null
> >+++ b/samples/livepatch/Makefile
> >@@ -0,0 +1 @@
> >+obj-$(CONFIG_SAMPLE_LIVE_PATCHING) += livepatch-sample.o
> >diff --git a/samples/livepatch/livepatch-sample.c b/samples/livepatch/livepatch-sample.c
> >new file mode 100644
> >index 0000000..21f159d
> >--- /dev/null
> >+++ b/samples/livepatch/livepatch-sample.c
> >@@ -0,0 +1,87 @@
> >+/*
> >+ * livepatch-sample.c - Kernel Live Patching Sample Module
> >+ *
> >+ * Copyright (C) 2014 Seth Jennings <sjenning@xxxxxxxxxx>
> >+ *
> >+ * This program is free software; you can redistribute it and/or
> >+ * modify it under the terms of the GNU General Public License
> >+ * as published by the Free Software Foundation; either version 2
> >+ * of the License, or (at your option) any later version.
> >+ *
> >+ * This program is distributed in the hope that it will be useful,
> >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >+ * GNU General Public License for more details.
> >+ *
> >+ * You should have received a copy of the GNU General Public License
> >+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
> >+ */
> >+
> >+#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/klp_sample/enabled
> >+ * <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)
> >+{
> >+	int ret;
> >+
> >+	ret = klp_register_patch(&patch);
> >+	if (ret)
> >+		return ret;
> >+	ret = klp_enable_patch(&patch);
> >+	if (ret) {
> >+		WARN_ON(klp_unregister_patch(&patch));
> >+		return ret;
> >+	}
> >+	return 0;
> >+}
> >+
> >+static void livepatch_exit(void)
> >+{
> >+	WARN_ON(klp_disable_patch(&patch));
> >+	WARN_ON(klp_unregister_patch(&patch));
> >+}
> >+
> >+module_init(livepatch_init);
> >+module_exit(livepatch_exit);
> >+MODULE_LICENSE("GPL");
> >-- 
> >2.1.0
> >
> >_______________________________________________
> >kpatch mailing list
> >kpatch@xxxxxxxxxx
> >https://www.redhat.com/mailman/listinfo/kpatch
> >
> >
> --
> To unsubscribe from this list: send the line "unsubscribe live-patching" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe live-patching" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux