diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-19 15:16:12 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-19 15:16:12 -0500 |
| commit | a3d66b5a17f81ee84604f95b0e2c9ccf0434c6f0 (patch) | |
| tree | 542e78181dcd7ac022fb581942e284fce2c895cd /kernel/livepatch | |
| parent | 319645cac26c2d065a485f5d59228433ad602f71 (diff) | |
| parent | e41b104c7dba92443e594e6bc86e4b0bf1cdf573 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching
Pull livepatching fix from Jiri Kosina:
"A fix for module handling in case kASLR has been enabled, from Zhou
Chengming"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
livepatch: x86: fix relocation computation with kASLR
Diffstat (limited to 'kernel/livepatch')
| -rw-r--r-- | kernel/livepatch/core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 6e5344112419..db545cbcdb89 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c | |||
| @@ -294,6 +294,12 @@ static int klp_write_object_relocations(struct module *pmod, | |||
| 294 | 294 | ||
| 295 | for (reloc = obj->relocs; reloc->name; reloc++) { | 295 | for (reloc = obj->relocs; reloc->name; reloc++) { |
| 296 | if (!klp_is_module(obj)) { | 296 | if (!klp_is_module(obj)) { |
| 297 | |||
| 298 | #if defined(CONFIG_RANDOMIZE_BASE) | ||
| 299 | /* If KASLR has been enabled, adjust old value accordingly */ | ||
| 300 | if (kaslr_enabled()) | ||
| 301 | reloc->val += kaslr_offset(); | ||
| 302 | #endif | ||
| 297 | ret = klp_verify_vmlinux_symbol(reloc->name, | 303 | ret = klp_verify_vmlinux_symbol(reloc->name, |
| 298 | reloc->val); | 304 | reloc->val); |
| 299 | if (ret) | 305 | if (ret) |
