From: Eric DeVolder <eric.devolder@oracle.com> To: linux-kernel@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org, ebiederm@xmission.com, dyoung@redhat.com, bhe@redhat.com, vgoyal@redhat.com Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, nramas@linux.microsoft.com, thomas.lendacky@amd.com, robh@kernel.org, efault@gmx.de, rppt@kernel.org, david@redhat.com, sourabhjain@linux.ibm.com, konrad.wilk@oracle.com, boris.ostrovsky@oracle.com, eric.devolder@oracle.com Subject: [PATCH v16 4/7] kexec: exclude elfcorehdr from the segment digest Date: Thu, 5 Jan 2023 10:17:06 -0500 [thread overview] Message-ID: <20230105151709.1845-5-eric.devolder@oracle.com> (raw) In-Reply-To: <20230105151709.1845-1-eric.devolder@oracle.com> When a crash kernel is loaded via the kexec_file_load() syscall, the kernel places the various segments (ie crash kernel, crash initrd, boot_params, elfcorehdr, purgatory, etc) in memory. For those architectures that utilize purgatory, a hash digest of the segments is calculated for integrity checking. This digest is embedded into the purgatory image prior to placing purgatory in memory. Since hotplug events cause changes to the elfcorehdr, purgatory integrity checking fails (at crash time, and no kdump created). As a result, this change explicitly excludes the elfcorehdr segment from the list of segments used to create the digest. By doing so, this permits changes to the elfcorehdr in response to hotplug events, without having to also reload purgatory due to the change to the digest. Signed-off-by: Eric DeVolder <eric.devolder@oracle.com> Acked-by: Baoquan He <bhe@redhat.com> --- kernel/kexec_file.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 270acae2801e..6e13b3a71fa6 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -723,6 +723,12 @@ static int kexec_calculate_store_digests(struct kimage *image) for (j = i = 0; i < image->nr_segments; i++) { struct kexec_segment *ksegment; +#ifdef CONFIG_CRASH_HOTPLUG + /* Exclude elfcorehdr segment to allow future changes via hotplug */ + if (image->elfcorehdr_index_valid && (j == image->elfcorehdr_index)) + continue; +#endif + ksegment = &image->segment[i]; /* * Skip purgatory as it will be modified once we put digest -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Eric DeVolder <eric.devolder@oracle.com> To: linux-kernel@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org, ebiederm@xmission.com, dyoung@redhat.com, bhe@redhat.com, vgoyal@redhat.com Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, nramas@linux.microsoft.com, thomas.lendacky@amd.com, robh@kernel.org, efault@gmx.de, rppt@kernel.org, david@redhat.com, sourabhjain@linux.ibm.com, konrad.wilk@oracle.com, boris.ostrovsky@oracle.com, eric.devolder@oracle.com Subject: [PATCH v16 4/7] kexec: exclude elfcorehdr from the segment digest Date: Thu, 5 Jan 2023 10:17:06 -0500 [thread overview] Message-ID: <20230105151709.1845-5-eric.devolder@oracle.com> (raw) In-Reply-To: <20230105151709.1845-1-eric.devolder@oracle.com> When a crash kernel is loaded via the kexec_file_load() syscall, the kernel places the various segments (ie crash kernel, crash initrd, boot_params, elfcorehdr, purgatory, etc) in memory. For those architectures that utilize purgatory, a hash digest of the segments is calculated for integrity checking. This digest is embedded into the purgatory image prior to placing purgatory in memory. Since hotplug events cause changes to the elfcorehdr, purgatory integrity checking fails (at crash time, and no kdump created). As a result, this change explicitly excludes the elfcorehdr segment from the list of segments used to create the digest. By doing so, this permits changes to the elfcorehdr in response to hotplug events, without having to also reload purgatory due to the change to the digest. Signed-off-by: Eric DeVolder <eric.devolder@oracle.com> Acked-by: Baoquan He <bhe@redhat.com> --- kernel/kexec_file.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index 270acae2801e..6e13b3a71fa6 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -723,6 +723,12 @@ static int kexec_calculate_store_digests(struct kimage *image) for (j = i = 0; i < image->nr_segments; i++) { struct kexec_segment *ksegment; +#ifdef CONFIG_CRASH_HOTPLUG + /* Exclude elfcorehdr segment to allow future changes via hotplug */ + if (image->elfcorehdr_index_valid && (j == image->elfcorehdr_index)) + continue; +#endif + ksegment = &image->segment[i]; /* * Skip purgatory as it will be modified once we put digest -- 2.31.1 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2023-01-05 15:18 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-05 15:17 [PATCH v16 0/7] crash: Kernel handling of CPU and memory hot un/plug Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 1/7] crash: move crash_prepare_elf64_headers() Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 2/7] crash: prototype change for crash_prepare_elf64_headers() Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 3/7] crash: add generic infrastructure for crash hotplug support Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder [this message] 2023-01-05 15:17 ` [PATCH v16 4/7] kexec: exclude elfcorehdr from the segment digest Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 5/7] kexec: exclude hot remove cpu from elfcorehdr notes Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 6/7] crash: memory and cpu hotplug sysfs attributes Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-05 15:17 ` [PATCH v16 7/7] x86/crash: add x86 crash hotplug support Eric DeVolder 2023-01-05 15:17 ` Eric DeVolder 2023-01-09 7:36 ` Baoquan He 2023-01-09 7:36 ` Baoquan He 2023-01-09 19:43 ` Eric DeVolder 2023-01-09 19:43 ` Eric DeVolder 2023-01-09 23:47 ` Baoquan He 2023-01-09 23:47 ` Baoquan He
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230105151709.1845-5-eric.devolder@oracle.com \ --to=eric.devolder@oracle.com \ --cc=bhe@redhat.com \ --cc=boris.ostrovsky@oracle.com \ --cc=bp@alien8.de \ --cc=dave.hansen@linux.intel.com \ --cc=david@redhat.com \ --cc=dyoung@redhat.com \ --cc=ebiederm@xmission.com \ --cc=efault@gmx.de \ --cc=hpa@zytor.com \ --cc=kexec@lists.infradead.org \ --cc=konrad.wilk@oracle.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=nramas@linux.microsoft.com \ --cc=robh@kernel.org \ --cc=rppt@kernel.org \ --cc=sourabhjain@linux.ibm.com \ --cc=tglx@linutronix.de \ --cc=thomas.lendacky@amd.com \ --cc=vgoyal@redhat.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.