Skip to content

Commit 03738dd

Browse files
coibyakpm00
authored andcommitted
crash_dump/dm-crypt: don't print in arch-specific code
Patch series "kdump: Enable LUKS-encrypted dump target support in ARM64 and PowerPC", v5. CONFIG_CRASH_DM_CRYPT has been introduced to support LUKS-encrypted device dump target by addressing two challenges [1], - Kdump kernel may not be able to decrypt the LUKS partition. For some machines, a system administrator may not have a chance to enter the password to decrypt the device in kdump initramfs after the 1st kernel crashes - LUKS2 by default use the memory-hard Argon2 key derivation function which is quite memory-consuming compared to the limited memory reserved for kdump. To also enable this feature for ARM64 and PowerPC, we need to add a device tree property dmcryptkeys [2] as similar to elfcorehdr to pass the memory address of the stored info of dm-crypt keys to the kdump kernel. This patch (of 3): When the vmcore dumping target is not a LUKS-encrypted target, it's expected that there is no dm-crypt key thus no need to return -ENOENT. Also print more logs in crash_load_dm_crypt_keys. The benefit is arch-specific code can be more succinct. Link: https://lkml.kernel.org/r/20260225060347.718905-1-coxu@redhat.com Link: https://lkml.kernel.org/r/20260225060347.718905-2-coxu@redhat.com Link: https://lore.kernel.org/all/20250502011246.99238-1-coxu@redhat.com/ [1] Link: devicetree-org/dt-schema#181 [2] Signed-off-by: Coiby Xu <coxu@redhat.com> Suggested-by: Will Deacon <will@kernel.org> Acked-by: Baoquan He <bhe@redhat.com> Cc: Arnaud Lefebvre <arnaud.lefebvre@clever-cloud.com> Cc: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Cc: Dave Young <dyoung@redhat.com> Cc: Kairui Song <ryncsn@gmail.com> Cc: Krzysztof Kozlowski <krzk@kernel.org> Cc: Pingfan Liu <kernelfans@gmail.com> Cc: Rob Herring <robh@kernel.org> Cc: Sourabh Jain <sourabhjain@linux.ibm.com> Cc: Thomas Staudt <tstaudt@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent d01684a commit 03738dd

2 files changed

Lines changed: 6 additions & 7 deletions

File tree

arch/x86/kernel/kexec-bzimage64.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,8 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
525525
if (ret)
526526
return ERR_PTR(ret);
527527
ret = crash_load_dm_crypt_keys(image);
528-
if (ret == -ENOENT) {
529-
kexec_dprintk("No dm crypt key to load\n");
530-
} else if (ret) {
531-
pr_err("Failed to load dm crypt keys\n");
528+
if (ret)
532529
return ERR_PTR(ret);
533-
}
534530
if (image->dm_crypt_keys_addr &&
535531
cmdline_len + MAX_ELFCOREHDR_STR_LEN + MAX_DMCRYPTKEYS_STR_LEN >
536532
header->cmdline_size) {

kernel/crash_dump_dm_crypt.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,14 +415,16 @@ int crash_load_dm_crypt_keys(struct kimage *image)
415415

416416
if (key_count <= 0) {
417417
kexec_dprintk("No dm-crypt keys\n");
418-
return -ENOENT;
418+
return 0;
419419
}
420420

421421
if (!is_dm_key_reused) {
422422
image->dm_crypt_keys_addr = 0;
423423
r = build_keys_header();
424-
if (r)
424+
if (r) {
425+
pr_err("Failed to build dm-crypt keys header, ret=%d\n", r);
425426
return r;
427+
}
426428
}
427429

428430
kbuf.buffer = keys_header;
@@ -433,6 +435,7 @@ int crash_load_dm_crypt_keys(struct kimage *image)
433435
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
434436
r = kexec_add_buffer(&kbuf);
435437
if (r) {
438+
pr_err("Failed to call kexec_add_buffer, ret=%d\n", r);
436439
kvfree((void *)kbuf.buffer);
437440
return r;
438441
}

0 commit comments

Comments
 (0)