diff options
Diffstat (limited to 'samples/livepatch/livepatch-sample.c')
-rw-r--r-- | samples/livepatch/livepatch-sample.c | 17 |
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; |