summaryrefslogtreecommitdiffstats
path: root/samples/livepatch/livepatch-sample.c
diff options
context:
space:
mode:
Diffstat (limited to 'samples/livepatch/livepatch-sample.c')
-rw-r--r--samples/livepatch/livepatch-sample.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/samples/livepatch/livepatch-sample.c b/samples/livepatch/livepatch-sample.c
index e34f871e69b1..629e0dca0887 100644
--- a/samples/livepatch/livepatch-sample.c
+++ b/samples/livepatch/livepatch-sample.c
@@ -17,6 +17,8 @@
17 * along with this program; if not, see <http://www.gnu.org/licenses/>. 17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
19 19
20#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
21
20#include <linux/module.h> 22#include <linux/module.h>
21#include <linux/kernel.h> 23#include <linux/kernel.h>
22#include <linux/livepatch.h> 24#include <linux/livepatch.h>
@@ -69,6 +71,21 @@ static int livepatch_init(void)
69{ 71{
70 int ret; 72 int ret;
71 73
74 if (!klp_have_reliable_stack() && !patch.immediate) {
75 /*
76 * WARNING: Be very careful when using 'patch.immediate' in
77 * your patches. It's ok to use it for simple patches like
78 * this, but for more complex patches which change function
79 * semantics, locking semantics, or data structures, it may not
80 * be safe. Use of this option will also prevent removal of
81 * the patch.
82 *
83 * See Documentation/livepatch/livepatch.txt for more details.
84 */
85 patch.immediate = true;
86 pr_notice("The consistency model isn't supported for your architecture. Bypassing safety mechanisms and applying the patch immediately.\n");
87 }
88
72 ret = klp_register_patch(&patch); 89 ret = klp_register_patch(&patch);
73 if (ret) 90 if (ret)
74 return ret; 91 return ret;