lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 25 Jan 2020 22:16:05 -0500
From:   Woody Suwalski <terraluna977@...il.com>
To:     LKML <linux-kernel@...r.kernel.org>
Cc:     ben@...adent.org.uk
Subject: [PATCH] fix 3.16 unknown rela relocation 4 error

Trying to use an AMD64 3.16 kernel built on a new Debian system fails 
because
most of the kernel modules can not be loaded.

This patch handles the PLT32 relocation errors for kernels modules built 
with binutils
newer then 2.31, similar to:
[    5.742485] module: autofs4: Unknown rela relocation: 4
[    5.742536] systemd[1]: Failed to insert module 'autofs4': Exec 
format error

This patch is based on a mainline kernel patch 
b21ebf2fb4cde1618915a97cc773e287ff49173e
From: "H.J. Lu" <hjl.tools@...il.com>
Date: Wed, 7 Feb 2018 14:20:09 -0800
Subject: x86: Treat R_X86_64_PLT32 as R_X86_64_PC32

Signed-off-by: Woody Suwalski <terraluna977@...il.com>

--- a/arch/x86/tools/relocs.c    2020-01-24 18:48:09.477919152 -0500
+++ b/arch/x86/tools/relocs.c    2020-01-24 18:48:53.645612045 -0500
@@ -763,6 +763,7 @@ static int do_reloc64(struct section *se
      switch (r_type) {
      case R_X86_64_NONE:
      case R_X86_64_PC32:
+    case R_X86_64_PLT32:
          /*
           * NONE can be ignored and PC relative relocations don't
           * need to be adjusted.
--- a/arch/x86/kernel/module.c    2020-01-24 18:46:54.922670590 -0500
+++ b/arch/x86/kernel/module.c    2020-01-24 18:47:46.714112016 -0500
@@ -180,6 +180,7 @@ int apply_relocate_add(Elf64_Shdr *sechd
                  goto overflow;
              break;
          case R_X86_64_PC32:
+        case R_X86_64_PLT32:
              val -= (u64)loc;
              *(u32 *)loc = val;
  #if 0


View attachment "reloc_PLT32_3.16.diff" of type "text/x-patch" (1216 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ