diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-31 16:02:18 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-01-31 16:02:18 -0500 |
| commit | e1c70f32386c4984ed8ca1a7aedb9bbff9ed3414 (patch) | |
| tree | 09a9092c1ea56b1d9c218a77b2510036b509f225 /samples | |
| parent | 183b6366cf473ff0e706a6751adc082faa44843d (diff) | |
| parent | d05b695c25bf0d704c74e0e1375de893531b9424 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching
Pull livepatching updates from Jiri Kosina:
- handle 'infinitely'-long sleeping tasks, from Miroslav Benes
- remove 'immediate' feature, as it turns out it doesn't provide the
originally expected semantics, and brings more issues than value
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
livepatch: add locking to force and signal functions
livepatch: Remove immediate feature
livepatch: force transition to finish
livepatch: send a fake signal to all blocking tasks
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/livepatch/livepatch-callbacks-demo.c | 15 | ||||
| -rw-r--r-- | samples/livepatch/livepatch-sample.c | 15 | ||||
| -rw-r--r-- | samples/livepatch/livepatch-shadow-fix1.c | 15 | ||||
| -rw-r--r-- | samples/livepatch/livepatch-shadow-fix2.c | 15 |
4 files changed, 0 insertions, 60 deletions
diff --git a/samples/livepatch/livepatch-callbacks-demo.c b/samples/livepatch/livepatch-callbacks-demo.c index 3d115bd68442..72f9e6d1387b 100644 --- a/samples/livepatch/livepatch-callbacks-demo.c +++ b/samples/livepatch/livepatch-callbacks-demo.c | |||
| @@ -197,21 +197,6 @@ static int livepatch_callbacks_demo_init(void) | |||
| 197 | { | 197 | { |
| 198 | int ret; | 198 | int ret; |
| 199 | 199 | ||
| 200 | if (!klp_have_reliable_stack() && !patch.immediate) { | ||
| 201 | /* | ||
| 202 | * WARNING: Be very careful when using 'patch.immediate' in | ||
| 203 | * your patches. It's ok to use it for simple patches like | ||
| 204 | * this, but for more complex patches which change function | ||
| 205 | * semantics, locking semantics, or data structures, it may not | ||
| 206 | * be safe. Use of this option will also prevent removal of | ||
| 207 | * the patch. | ||
| 208 | * | ||
| 209 | * See Documentation/livepatch/livepatch.txt for more details. | ||
| 210 | */ | ||
| 211 | patch.immediate = true; | ||
| 212 | pr_notice("The consistency model isn't supported for your architecture. Bypassing safety mechanisms and applying the patch immediately.\n"); | ||
| 213 | } | ||
| 214 | |||
| 215 | ret = klp_register_patch(&patch); | 200 | ret = klp_register_patch(&patch); |
| 216 | if (ret) | 201 | if (ret) |
| 217 | return ret; | 202 | return ret; |
diff --git a/samples/livepatch/livepatch-sample.c b/samples/livepatch/livepatch-sample.c index 84795223f15f..2d554dd930e2 100644 --- a/samples/livepatch/livepatch-sample.c +++ b/samples/livepatch/livepatch-sample.c | |||
| @@ -71,21 +71,6 @@ static int livepatch_init(void) | |||
| 71 | { | 71 | { |
| 72 | int ret; | 72 | int ret; |
| 73 | 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 | |||
| 89 | ret = klp_register_patch(&patch); | 74 | ret = klp_register_patch(&patch); |
| 90 | if (ret) | 75 | if (ret) |
| 91 | return ret; | 76 | return ret; |
diff --git a/samples/livepatch/livepatch-shadow-fix1.c b/samples/livepatch/livepatch-shadow-fix1.c index fbe0a1f3d99b..830c55514f9f 100644 --- a/samples/livepatch/livepatch-shadow-fix1.c +++ b/samples/livepatch/livepatch-shadow-fix1.c | |||
| @@ -133,21 +133,6 @@ static int livepatch_shadow_fix1_init(void) | |||
| 133 | { | 133 | { |
| 134 | int ret; | 134 | int ret; |
| 135 | 135 | ||
| 136 | if (!klp_have_reliable_stack() && !patch.immediate) { | ||
| 137 | /* | ||
| 138 | * WARNING: Be very careful when using 'patch.immediate' in | ||
| 139 | * your patches. It's ok to use it for simple patches like | ||
| 140 | * this, but for more complex patches which change function | ||
| 141 | * semantics, locking semantics, or data structures, it may not | ||
| 142 | * be safe. Use of this option will also prevent removal of | ||
| 143 | * the patch. | ||
| 144 | * | ||
| 145 | * See Documentation/livepatch/livepatch.txt for more details. | ||
| 146 | */ | ||
| 147 | patch.immediate = true; | ||
| 148 | pr_notice("The consistency model isn't supported for your architecture. Bypassing safety mechanisms and applying the patch immediately.\n"); | ||
| 149 | } | ||
| 150 | |||
| 151 | ret = klp_register_patch(&patch); | 136 | ret = klp_register_patch(&patch); |
| 152 | if (ret) | 137 | if (ret) |
| 153 | return ret; | 138 | return ret; |
diff --git a/samples/livepatch/livepatch-shadow-fix2.c b/samples/livepatch/livepatch-shadow-fix2.c index 53c1794bdc5f..ff9948f0ec00 100644 --- a/samples/livepatch/livepatch-shadow-fix2.c +++ b/samples/livepatch/livepatch-shadow-fix2.c | |||
| @@ -128,21 +128,6 @@ static int livepatch_shadow_fix2_init(void) | |||
| 128 | { | 128 | { |
| 129 | int ret; | 129 | int ret; |
| 130 | 130 | ||
| 131 | if (!klp_have_reliable_stack() && !patch.immediate) { | ||
| 132 | /* | ||
| 133 | * WARNING: Be very careful when using 'patch.immediate' in | ||
| 134 | * your patches. It's ok to use it for simple patches like | ||
| 135 | * this, but for more complex patches which change function | ||
| 136 | * semantics, locking semantics, or data structures, it may not | ||
| 137 | * be safe. Use of this option will also prevent removal of | ||
| 138 | * the patch. | ||
| 139 | * | ||
| 140 | * See Documentation/livepatch/livepatch.txt for more details. | ||
| 141 | */ | ||
| 142 | patch.immediate = true; | ||
| 143 | pr_notice("The consistency model isn't supported for your architecture. Bypassing safety mechanisms and applying the patch immediately.\n"); | ||
| 144 | } | ||
| 145 | |||
| 146 | ret = klp_register_patch(&patch); | 131 | ret = klp_register_patch(&patch); |
| 147 | if (ret) | 132 | if (ret) |
| 148 | return ret; | 133 | return ret; |
