Blob Blame History Raw
From 8ef16112414c6077057c50817a61b9f5e7e20e4a Mon Sep 17 00:00:00 2001
From: Miroslav Benes <mbenes@suse.cz>
Date: Thu, 21 Dec 2017 18:01:00 +0100
Subject: [PATCH] livepatch: Mark the kernel unsupported when disabling a live
 patch
Patch-mainline: Never, SLE specific
References: fate#323487

Disabling of a live patch is not supported in SUSE Linux Enterprise.

Adapted from SLE12.

Signed-off-by: Miroslav Benes <mbenes@suse.cz>
---
 kernel/livepatch/core.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -915,6 +915,15 @@ static int klp_init_patch(struct klp_pat
 	return 0;
 }
 
+static void klp_taint_kernel(const struct klp_patch *patch)
+{
+#ifdef CONFIG_SUSE_KERNEL_SUPPORTED
+	pr_warn("attempt to disable live patch %s, setting NO_SUPPORT taint flag\n",
+			patch->mod->name);
+	add_taint(TAINT_NO_SUPPORT, LOCKDEP_STILL_OK);
+#endif
+}
+
 static int __klp_disable_patch(struct klp_patch *patch)
 {
 	struct klp_object *obj;
@@ -925,6 +934,8 @@ static int __klp_disable_patch(struct kl
 	if (klp_transition_patch)
 		return -EBUSY;
 
+	klp_taint_kernel(patch);
+
 	klp_init_transition(patch, KLP_UNPATCHED);
 
 	klp_for_each_object(patch, obj)