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: Cyril B. <cbay@alwaysdata.com> Signed-off-by: Zhou Chengming <zhouchengming1@huawei.com> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
Родитель
99aaa9c64b
Коммит
e41b104c7d
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче