alpha: support R_ALPHA_REFLONG relocations for module loading
authorMichael Cree <mcree@orcon.net.nz>
Sat, 24 Jun 2017 01:37:02 +0000 (13:37 +1200)
committerMatt Turner <mattst88@gmail.com>
Tue, 29 Aug 2017 19:01:52 +0000 (12:01 -0700)
Since commit 71810db27c1c853b33 (modversions: treat symbol CRCs
as 32 bit quantities) R_ALPHA_REFLONG relocations can be required
to load modules. This implements it.

Tested-by: Bob Tracy <rct@gherkin.frus.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Michael Cree <mcree@orcon.net.nz>
Signed-off-by: Matt Turner <mattst88@gmail.com>
arch/alpha/kernel/module.c

index 936bc8f89a679f2f8aeb2f7e3cb41f11190a2d77..47632fa8c24e02418cdbac8d5c139f101aa51945 100644 (file)
@@ -181,6 +181,9 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
                switch (r_type) {
                case R_ALPHA_NONE:
                        break;
+               case R_ALPHA_REFLONG:
+                       *(u32 *)location = value;
+                       break;
                case R_ALPHA_REFQUAD:
                        /* BUG() can produce misaligned relocations. */
                        ((u32 *)location)[0] = value;