diff options
Diffstat (limited to 'arch/x86/kernel/module.c')
-rw-r--r-- | arch/x86/kernel/module.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c index f58336af095c..b052e883dd8c 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c | |||
@@ -201,6 +201,12 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, | |||
201 | goto overflow; | 201 | goto overflow; |
202 | #endif | 202 | #endif |
203 | break; | 203 | break; |
204 | case R_X86_64_PC64: | ||
205 | if (*(u64 *)loc != 0) | ||
206 | goto invalid_relocation; | ||
207 | val -= (u64)loc; | ||
208 | *(u64 *)loc = val; | ||
209 | break; | ||
204 | default: | 210 | default: |
205 | pr_err("%s: Unknown rela relocation: %llu\n", | 211 | pr_err("%s: Unknown rela relocation: %llu\n", |
206 | me->name, ELF64_R_TYPE(rel[i].r_info)); | 212 | me->name, ELF64_R_TYPE(rel[i].r_info)); |