kexec: fix for "Unhandled rela relocation: R_X86_64_PLT32" error
bhsharma at redhat.com
Tue Aug 21 04:21:49 PDT 2018
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 at googlemail.com> 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.
>>> Signed-off-by: Chris Clayton <chris2553 at googlemail.com>
>> 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.
>>> 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;
>>> case R_X86_64_PC32:
>>> + case R_X86_64_PLT32:
>>> *(uint32_t *)location = value - address;
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 at redhat.com>
More information about the kexec