From: Coiby Xu <coiby.xu@gmail.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: Sourabh Jain <sourabhjain@linux.ibm.com>,
catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
chenhuacai@kernel.org, kernel@xen0n.name, maddy@linux.ibm.com,
mpe@ellerman.id.au, npiggin@gmail.com, chleroy@kernel.org,
tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, hpa@zytor.com,
akpm@linux-foundation.org, baoquan.he@linux.dev, rppt@kernel.org,
pasha.tatashin@soleen.com, pratyush@kernel.org,
ruirui.yang@linux.dev, kees@kernel.org, thuth@redhat.com,
gshan@redhat.com, jic23@kernel.org, james.morse@arm.com,
ardb@kernel.org, leitao@debian.org, yeoreum.yun@arm.com,
tangyouling@kylinos.cn, hbathini@linux.ibm.com,
adityag@linux.ibm.com, ionut.nechita@windriver.com,
liaoyuanhong@vivo.com, seanjc@google.com,
fuqiang.wang@easystack.cn, makb@juniper.net, piliu@redhat.com,
ebiggers@kernel.org, jbouron@amazon.com, mclapinski@google.com,
me@linux.beauty, graf@amazon.com, bgwin@google.com,
robh@kernel.org, takahiro.akashi@linaro.org,
palmer@rivosinc.com, x86@kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
linuxppc-dev@lists.ozlabs.org, kexec@lists.infradead.org,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v3 07/17] crash_dump: Fix potential double-free of keys_header
Date: Mon, 31 Aug 2026 21:36:33 +0800 [thread overview]
Message-ID: <apWDDWhkVMIpKWS-@Rk> (raw)
In-Reply-To: <fecbe6ee-12e3-4f3d-94ac-eb7cd08eeb0d@huawei.com>
On Mon, Aug 31, 2026 at 09:24:07AM +0800, Jinjie Ruan wrote:
>
>
>在 2026/8/30 13:59, Sourabh Jain 写道:
>> Hello Jinjie,
>>
>> Coiby is handling this issue in the below patch series:
>> https://lore.kernel.org/all/20260828084900.1496839-2-coiby.xu@gmail.com/
>>
>> Since the above patch series is all about crash_load_dm_crypt_keys,
>> could you
>> please consider dropping this patch from your series and reviewing his
>> patch
>> instead?
>
>Absolutely, happy to do so — I'll drop this patch and review Coiby's
>series instead.
Hi Jinjie,
Thank you for agreeing to drop your patch and review mine instead!
>
>>
>> Thanks,
>> Sourabh Jain
>>
>> On 26/08/26 14:55, Jinjie Ruan wrote:
>>> `keys_header` was freed in `build_keys_header()` without being reset
>>> to NULL, and the error path in `crash_load_dm_crypt_keys()` freed it
>>> unconditionally even when reused, leading to double-free or
>>> use-after-free.
>>>
>>> Add `free_keys_header()` to centralize freeing and NULL-setting.
>>> Use it in `build_keys_header()` and only free in the error path when
>>> the header was newly built (`!is_dm_key_reused`).
>>>
>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>> Cc: Baoquan He <bhe@redhat.com>
>>> Cc: Mike Rapoport <rppt@kernel.org>
>>> Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
>>> Cc: Pratyush Yadav <pratyush@kernel.org>
>>> Cc: Dave Young <ruirui.yang@linux.dev>
>>> Cc: stable@vger.kernel.org
>>> Fixes: e3a84be1ec2f ("arm64,ppc64le/kdump: pass dm-crypt keys to kdump
>>> kernel")
>>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>>> ---
>>> kernel/crash_dump_dm_crypt.c | 15 +++++++++++----
>>> 1 file changed, 11 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/kernel/crash_dump_dm_crypt.c b/kernel/crash_dump_dm_crypt.c
>>> index c685497cd470..ed0960ff0987 100644
>>> --- a/kernel/crash_dump_dm_crypt.c
>>> +++ b/kernel/crash_dump_dm_crypt.c
>>> @@ -363,15 +363,21 @@ static struct configfs_subsystem
>>> config_keys_subsys = {
>>> },
>>> };
>>> +static void free_keys_header(void)
>>> +{
>>> + if (keys_header) {
>>> + kvfree(keys_header);
>>> + keys_header = NULL;
>>> + }
>>> +}
>>> +
>>> static int build_keys_header(void)
>>> {
>>> struct config_item *item = NULL;
>>> struct config_key *key;
>>> int i, r;
>>> - if (keys_header != NULL)
>>> - kvfree(keys_header);
>>> -
>>> + free_keys_header();
>>> keys_header = kzalloc(get_keys_header_size(key_count), GFP_KERNEL);
>>> if (!keys_header)
>>> return -ENOMEM;
>>> @@ -441,7 +447,8 @@ int crash_load_dm_crypt_keys(struct kimage *image)
>>> r = kexec_add_buffer(&kbuf);
>>> if (r) {
>>> pr_err("Failed to call kexec_add_buffer, ret=%d\n", r);
>>> - kvfree((void *)kbuf.buffer);
>>> + if (!is_dm_key_reused)
>>> + free_keys_header();
>>> return r;
>>> }
>>> image->dm_crypt_keys_addr = kbuf.mem;
>>
>
--
Best regards,
Coiby
next prev parent reply other threads:[~2026-08-31 13:40 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-26 9:25 [PATCH v3 00/17] crash: Rework and add arm64 crash hotplug support Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 01/17] kexec: Record allocated CMA pages to fix release size mismatch Jinjie Ruan
2026-09-01 20:14 ` Mike Rapoport
2026-09-02 1:10 ` Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 02/17] kexec: Extract kexec_free_segment_cma() from kimage_free_cma() Jinjie Ruan
2026-09-01 20:14 ` Mike Rapoport
2026-08-26 9:25 ` [PATCH v3 03/17] arm64: kexec_file: Fix CMA page leaks in segment placement retry loops Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 04/17] arm64: kexec_file: Fix elf_headers memory leak in retry loop Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 05/17] LoongArch: kexec: Fix CMA page leaks in segment placement retry loops Jinjie Ruan
2026-08-31 14:09 ` Huacai Chen
2026-09-01 1:41 ` Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 06/17] LoongArch: kexec_file: Fix elf_headers memory leak in retry loop Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 07/17] crash_dump: Fix potential double-free of keys_header Jinjie Ruan
2026-08-30 5:59 ` Sourabh Jain
2026-08-31 1:24 ` Jinjie Ruan
2026-08-31 13:36 ` Coiby Xu [this message]
2026-08-26 9:25 ` [PATCH v3 08/17] crash: Extract crash_get_memory_ranges() helper Jinjie Ruan
2026-09-01 20:14 ` Mike Rapoport
2026-08-26 9:25 ` [PATCH v3 09/17] crash: Fix TOCTOU race in crash memory range collection Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 10/17] elf: Introduce elf64_phdr_size() helper Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 11/17] crash: Introduce crash_extra_elfcorehdr_size() helper Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 12/17] x86/crash: Use num_possible_cpus() for elfcorehdr size Jinjie Ruan
2026-09-02 6:14 ` Sourabh Jain
2026-09-02 10:01 ` Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 13/17] crash: Improve elfcorehdr segment identification Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 14/17] x86/crash: Simplify crash_load_segments() using crash_extra_elfcorehdr_size() Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 15/17] crash: Simplify CRASH_MAX_MEMORY_RANGES handling Jinjie Ruan
2026-09-01 20:14 ` Mike Rapoport
2026-09-02 1:19 ` Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 16/17] arm64: kexec_file: Simplify load_other_segments() Jinjie Ruan
2026-08-26 9:25 ` [PATCH v3 17/17] arm64: crash: Add crash hotplug support Jinjie Ruan
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=apWDDWhkVMIpKWS-@Rk \
--to=coiby.xu@gmail.com \
--cc=adityag@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=baoquan.he@linux.dev \
--cc=bgwin@google.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=chleroy@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=ebiggers@kernel.org \
--cc=fuqiang.wang@easystack.cn \
--cc=graf@amazon.com \
--cc=gshan@redhat.com \
--cc=hbathini@linux.ibm.com \
--cc=hpa@zytor.com \
--cc=ionut.nechita@windriver.com \
--cc=james.morse@arm.com \
--cc=jbouron@amazon.com \
--cc=jic23@kernel.org \
--cc=kees@kernel.org \
--cc=kernel@xen0n.name \
--cc=kexec@lists.infradead.org \
--cc=leitao@debian.org \
--cc=liaoyuanhong@vivo.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=maddy@linux.ibm.com \
--cc=makb@juniper.net \
--cc=mark.rutland@arm.com \
--cc=mclapinski@google.com \
--cc=me@linux.beauty \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=palmer@rivosinc.com \
--cc=pasha.tatashin@soleen.com \
--cc=piliu@redhat.com \
--cc=pratyush@kernel.org \
--cc=robh@kernel.org \
--cc=rppt@kernel.org \
--cc=ruanjinjie@huawei.com \
--cc=ruirui.yang@linux.dev \
--cc=seanjc@google.com \
--cc=sourabhjain@linux.ibm.com \
--cc=takahiro.akashi@linaro.org \
--cc=tangyouling@kylinos.cn \
--cc=tglx@kernel.org \
--cc=thuth@redhat.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=yeoreum.yun@arm.com \
/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: link
Be 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.