Subject: [Bug 217702] New: makedumpfile can not open /proc/vmcore

From: [email-masked]
Date: Tue, 25 Jul 2023 02:04:45 +0000

https://bugzilla.kernel.org/show_bug.cgi?id=217702

            Bug ID: 217702
           Summary: makedumpfile can not open /proc/vmcore
           Product: Platform Specific/Hardware
           Version: 2.5
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: PPC-64
          Assignee: [email-masked]
          Reporter: [email-masked]
        Regression: No

This bug should be introduced by the
commit 606787fed7268feb256957872586370b56af697a
Author: Nicholas Piggin <[email-masked]>
Date:   Tue Jun 6 19:38:32 2023 +1000

    powerpc/64s: Remove support for ELFv1 little endian userspace

    ELFv2 was introduced together with little-endian. ELFv1 with LE has
    never been a thing. The GNU toolchain can create such a beast, but
    anyone doing that is a maniac who needs to be stopped so I consider
    this patch a feature.

    Signed-off-by: Nicholas Piggin <[email-masked]>
    Signed-off-by: Michael Ellerman <[email-masked]>
    Link: https://msgid.link/[email-masked]

And can be workaround by the following draft patch:

diff --git a/arch/powerpc/kexec/file_load_64.c
b/arch/powerpc/kexec/file_load_64.c
index 110d28bede2a..6af49c90c4b2 100644
--- a/arch/powerpc/kexec/file_load_64.c
+++ b/arch/powerpc/kexec/file_load_64.c
@@ -782,6 +782,18 @@ static void update_backup_region_phdr(struct kimage
*image, Elf64_Ehdr *ehdr)
        }
 }

+/**
+ * 64le only supports ELFv2 64-bit binaries (64be supports v1 and v2).
+ */
+static inline void update_elfcorehdr_eflags(Elf64_Ehdr *ehdr)
+{
+#if defined(CONFIG_PPC64) && defined(CONFIG_CPU_LITTLE_ENDIAN)
+       ehdr->e_flags = 0x2;
+#endif
+}
+
+
+
 /**
  * load_elfcorehdr_segment - Setup crash memory ranges and initialize
elfcorehdr
  *                           segment needed to load kdump kernel.
@@ -810,6 +822,7 @@ static int load_elfcorehdr_segment(struct kimage *image,
struct kexec_buf *kbuf)

        /* Fix the offset for backup region in the ELF header */
        update_backup_region_phdr(image, headers);
+       update_elfcorehdr_eflags(headers);

        kbuf->buffer = headers;
        kbuf->mem = KEXEC_BUF_MEM_UNKNOWN;

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.