summaryrefslogtreecommitdiffstats
path: root/kernel/livepatch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-19 21:16:12 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-19 21:16:12 +0100
commita3d66b5a17f81ee84604f95b0e2c9ccf0434c6f0 (patch)
tree542e78181dcd7ac022fb581942e284fce2c895cd /kernel/livepatch
parentMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jik... (diff)
parentlivepatch: x86: fix relocation computation with kASLR (diff)
downloadlinux-a3d66b5a17f81ee84604f95b0e2c9ccf0434c6f0.tar.xz
linux-a3d66b5a17f81ee84604f95b0e2c9ccf0434c6f0.zip
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.c6
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,
for (reloc = obj->relocs; reloc->name; reloc++) {
if (!klp_is_module(obj)) {
+
+#if defined(CONFIG_RANDOMIZE_BASE)
+ /* If KASLR has been enabled, adjust old value accordingly */
+ if (kaslr_enabled())
+ reloc->val += kaslr_offset();
+#endif
ret = klp_verify_vmlinux_symbol(reloc->name,
reloc->val);
if (ret)