parisc: Fix module loading error with JUMP_LABEL feature
authorHelge Deller <deller@gmx.de>
Sat, 8 Jun 2019 18:04:46 +0000 (20:04 +0200)
committerHelge Deller <deller@gmx.de>
Sat, 8 Jun 2019 18:06:20 +0000 (20:06 +0200)
Commit 62217beb394e ("parisc: Add static branch and JUMP_LABEL feature") missed
to add code to handle PCREL64 relocations which are generated when creating a
jump label on a 64-bit kernel.

This patch fixes module load errors like this one:
# modprobe -v ipv6
insmod /lib/modules/5.2.0-rc1-JeR/kernel/net/ipv6/ipv6.ko
modprobe: ERROR: could not insert 'ipv6': Exec format error
dmesg reports:
module ipv6: Unknown relocation: 72

Reported-by: Jeroen Roovers <jer@gentoo.org>
Tested-by: Jeroen Roovers <jer@gentoo.org>
Fixes: 62217beb394e ("parisc: Add static branch and JUMP_LABEL feature")
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/module.c

index f241ded..1f0f29a 100644 (file)
@@ -786,6 +786,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
                        /* 32-bit PC relative address */
                        *loc = val - dot - 8 + addend;
                        break;
+               case R_PARISC_PCREL64:
+                       /* 64-bit PC relative address */
+                       *loc64 = val - dot - 8 + addend;
+                       break;
                case R_PARISC_DIR64:
                        /* 64-bit effective address */
                        *loc64 = val + addend;