Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f655322 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Helge Deller
Browse files

parisc: support R_PARISC_SECREL32 relocation in modules



The parisc kernel doesn't work with CONFIG_MODVERSIONS since the commit
71810db2. It can't load modules with the
error: "module unix: Unknown relocation: 41".

The commit changes __kcrctab from 64-bit valus to 32-bit values. The
assembler generates R_PARISC_SECREL32 secrel relocation for them and the
module loader doesn't support this relocation.

This patch adds the R_PARISC_SECREL32 relocation to the module loader.

Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org	# v4.10+
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 95422dec
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -620,6 +620,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
			 */
			*loc = fsel(val, addend); 
			break;
		case R_PARISC_SECREL32:
			/* 32-bit section relative address. */
			*loc = fsel(val, addend);
			break;
		case R_PARISC_DPREL21L:
			/* left 21 bit of relative address */
			val = lrsel(val - dp, addend);
@@ -807,6 +811,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
			 */
			*loc = fsel(val, addend); 
			break;
		case R_PARISC_SECREL32:
			/* 32-bit section relative address. */
			*loc = fsel(val, addend);
			break;
		case R_PARISC_FPTR64:
			/* 64-bit function address */
			if(in_local(me, (void *)(val + addend))) {