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

Bhupesh Sharma 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.
>>>
>
> OK.
>
>>> 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.
>
> 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 at redhat.com>

Thanks,
Bhupesh



More information about the kexec mailing list