Re: kexec: fix for "Unhandled rela relocation: R_X86_64_PLT32" error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 21, 2018 at 04:51:49PM +0530, Bhupesh Sharma wrote:
> Thanks for this fix Chris,
> 
> I have tested this fix on Fedora 29 and it works fine.
> 
> On Mon, Aug 20, 2018 at 8:42 PM, Chris Clayton <chris2553@xxxxxxxxxxxxxx> wrote:
> >
> >
> > On 20/08/2018 13:21, Baoquan He wrote:
> >> Hi Chris,
> >>
> >> On 08/20/18 at 08:17pm, Baoquan He wrote:
> >>> In response to a change in binutils, commit b21ebf2fb4c
> >>> (x86: Treat R_X86_64_PLT32 as R_X86_64_PC32) was applied to
> >>> the linux kernel during the 4.16 development cycle and has
> >>> since been backported to earlier stable kernel series. The
> >>> change results in the failure message in $SUBJECT when
> >>> rebooting via kexec.
> >>>
> >>> Fix this by replicating the change in kexec.
> >>>
> >
> > OK.
> >
> >>> Signed-off-by: Chris Clayton <chris2553@xxxxxxxxxxxxxx>
> >>
> >> I adjusted the patch log a little bit, you have tested it on upstream
> >> kernel, right?
> >>
> >
> > At the time of my original message (25 July 2018), 4.18.0-rc6+ was the latest upstream. I tested my change on that and
> > on the latest stable 4.14 series kernel, which was 4.14.57. I've just tested it with 4.18.3 and 4.14.65 and it works
> > fine. I don't have a 4.19 development kernel installed at the moment - I'm busy with other stuff.
> >
> > Chris
> >
> >
> >> Thanks
> >> Baoquan
> >>
> >>> ---
> >>>  kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 1 +
> >>>  1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
> >>> index 7fdde73..db85b44 100644
> >>> --- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
> >>> +++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
> >>> @@ -79,6 +79,7 @@ void machine_apply_elf_rel(struct mem_ehdr *UNUSED(ehdr),
> >>>                      goto overflow;
> >>>              break;
> >>>      case R_X86_64_PC32:
> >>> +    case R_X86_64_PLT32:
> >>>              *(uint32_t *)location = value - address;
> >>>              break;
> >>>      default:
> >>> --
> >>> 2.13.6
> >>>
> >>>
> 
> Hi Simon,
> 
> This patch fixes an important issue because of which both kdump and
> kexec have become non-operational with newer kernels (> 4.18)
> 
> We are seeing this issue with newer Fedora versions (for e.g. Fedora
> 29, please see <https://bugzilla.redhat.com/show_bug.cgi?id=1619122>
> for details), so would request you to apply this as an 'urgent' fix to
> make sure that the kexec/kdump code keeps working fine with newer
> kernel versions as well.
> 
> I have tested this on a Fedora 29 x86_64 host and I no longer
> encounter the 'Unhandled rela relocation: R_X86_64_PLT32' error.
> 
> Please feel free to add to this patch:
> Tested-by and Acked-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx>

Thanks, and apologies for the delay - I was travelling.

For some reason the patch did not apply cleanly so I did so by hand.
The result is as follows:


>From b9de21ef51a7ceab7122a707c188602eae22c4ee Mon Sep 17 00:00:00 2001
From: Chris Clayton <chris2553@xxxxxxxxxxxxxx>
Date: Mon, 20 Aug 2018 12:00:31 +0100
Subject: [PATCH] kexec: fix for "Unhandled rela relocation: R_X86_64_PLT32"
 error

In response to a change in binutils, commit b21ebf2fb4c
(x86: Treat R_X86_64_PLT32 as R_X86_64_PC32) was applied to
the linux kernel during the 4.16 development cycle and has
since been backported to earlier stable kernel series. The
change results in the failure message in $SUBJECT when
rebooting via kexec.

Fix this by replicating the change in kexec.

Signed-off-by: Chris Clayton <chris2553@xxxxxxxxxxxxxx>
Acked-by: Baoquan He <bhe@xxxxxxxxxx>
Tested-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx>
Acked-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx>
Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>
---
 kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
index 7fdde73a5eca..db85b443238d 100644
--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
+++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
@@ -79,6 +79,7 @@ void machine_apply_elf_rel(struct mem_ehdr *UNUSED(ehdr),
 			goto overflow;
 		break;
 	case R_X86_64_PC32: 
+	case R_X86_64_PLT32:
 		*(uint32_t *)location = value - address;
 		break;
 	default:
-- 
2.11.0


_______________________________________________
kexec mailing list
kexec@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/kexec



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux