[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <871q2oy6eb.fsf@email.froward.int.ebiederm.org>
Date: Fri, 16 Aug 2024 07:54:52 -0500
From: "Eric W. Biederman" <ebiederm@...ssion.com>
To: Petr Tesarik <petr.tesarik@...e.com>
Cc: Sourabh Jain <sourabhjain@...ux.ibm.com>, Hari Bathini
<hbathini@...ux.ibm.com>, Baoquan He <bhe@...hat.com>, Andrew Morton
<akpm@...ux-foundation.org>, Eric DeVolder <eric.devolder@...cle.com>,
kexec@...ts.infradead.org (open list:KEXEC),
linux-kernel@...r.kernel.org (open list), Petr Tesarik
<ptesarik@...e.com>, stable@...nel.org
Subject: Re: [PATCH 1/1] kexec_file: fix elfcorehdr digest exclusion when
CONFIG_CRASH_HOTPLUG=y
Petr Tesarik <petr.tesarik@...e.com> writes:
> From: Petr Tesarik <ptesarik@...e.com>
>
> Fix the condition to exclude the elfcorehdr segment from the SHA digest
> calculation.
>
> The j iterator is an index into the output sha_regions[] array, not into
> the input image->segment[] array. Once it reaches image->elfcorehdr_index,
> all subsequent segments are excluded. Besides, if the purgatory segment
> precedes the elfcorehdr segment, the elfcorehdr may be wrongly included in
> the calculation.
I would rather make CONFIG_CRASH_HOTPLUG depend on broken.
The hash is supposed to include everything we depend upon so when
a borken machine corrupts something we can detect that corruption
and not attempt to take a crash dump.
The elfcorehdr is definitely something that needs to be part of the
hash.
So please go back to the drawing board and find a way to include the
program header in the hash even with CONFIG_CRASH_HOTPLUG.
Eric
> Fixes: f7cc804a9fd4 ("kexec: exclude elfcorehdr from the segment digest")
> Cc: stable@...nel.org
> Signed-off-by: Petr Tesarik <ptesarik@...e.com>
> ---
> kernel/kexec_file.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
> index 3d64290d24c9..3eedb8c226ad 100644
> --- a/kernel/kexec_file.c
> +++ b/kernel/kexec_file.c
> @@ -752,7 +752,7 @@ static int kexec_calculate_store_digests(struct kimage *image)
>
> #ifdef CONFIG_CRASH_HOTPLUG
> /* Exclude elfcorehdr segment to allow future changes via hotplug */
> - if (j == image->elfcorehdr_index)
> + if (i == image->elfcorehdr_index)
> continue;
> #endif
Powered by blists - more mailing lists