提交 e41b104c 编写于 作者: Z Zhou Chengming 提交者: Jiri Kosina

livepatch: x86: fix relocation computation with kASLR

With kASLR enabled, old_addr provided by patch module is being shifted
accrodingly so that the symbol lookups work. To have module relocations
handled properly as well, the same transformation needs to be perfomed
on relocation address information.

[jkosina@suse.cz: extended / reworded changelog a bit]
Reported-by: NCyril B. <cbay@alwaysdata.com>
Signed-off-by: NZhou Chengming <zhouchengming1@huawei.com>
Acked-by: NJosh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: NJiri Kosina <jkosina@suse.cz>
上级 99aaa9c6
...@@ -294,6 +294,12 @@ static int klp_write_object_relocations(struct module *pmod, ...@@ -294,6 +294,12 @@ static int klp_write_object_relocations(struct module *pmod,
for (reloc = obj->relocs; reloc->name; reloc++) { for (reloc = obj->relocs; reloc->name; reloc++) {
if (!klp_is_module(obj)) { 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, ret = klp_verify_vmlinux_symbol(reloc->name,
reloc->val); reloc->val);
if (ret) if (ret)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册