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.

Suggested-by: Will Deacon <[email protected]>
Signed-off-by: Coiby Xu <[email protected]>
---
 arch/x86/kernel/kexec-bzimage64.c | 6 +-----
 kernel/crash_dump_dm_crypt.c      | 7 +++++--
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kernel/kexec-bzimage64.c 
b/arch/x86/kernel/kexec-bzimage64.c
index 7508d0ccc740..d20cf976d01a 100644
--- a/arch/x86/kernel/kexec-bzimage64.c
+++ b/arch/x86/kernel/kexec-bzimage64.c
@@ -518,12 +518,8 @@ static void *bzImage64_load(struct kimage *image, char 
*kernel,
                if (ret)
                        return ERR_PTR(ret);
                ret = crash_load_dm_crypt_keys(image);
-               if (ret == -ENOENT) {
-                       kexec_dprintk("No dm crypt key to load\n");
-               } else if (ret) {
-                       pr_err("Failed to load dm crypt keys\n");
+               if (ret)
                        return ERR_PTR(ret);
-               }
                if (image->dm_crypt_keys_addr &&
                    cmdline_len + MAX_ELFCOREHDR_STR_LEN + 
MAX_DMCRYPTKEYS_STR_LEN >
                            header->cmdline_size) {
diff --git a/kernel/crash_dump_dm_crypt.c b/kernel/crash_dump_dm_crypt.c
index 401423ba477d..478dacb0625c 100644
--- a/kernel/crash_dump_dm_crypt.c
+++ b/kernel/crash_dump_dm_crypt.c
@@ -405,14 +405,16 @@ int crash_load_dm_crypt_keys(struct kimage *image)
 
        if (key_count <= 0) {
                kexec_dprintk("No dm-crypt keys\n");
-               return -ENOENT;
+               return 0;
        }
 
        if (!is_dm_key_reused) {
                image->dm_crypt_keys_addr = 0;
                r = build_keys_header();
-               if (r)
+               if (r) {
+                       pr_err("Failed to build dm-crypt keys header, 
ret=%d\n", r);
                        return r;
+               }
        }
 
        kbuf.buffer = keys_header;
@@ -423,6 +425,7 @@ int crash_load_dm_crypt_keys(struct kimage *image)
        kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
        r = kexec_add_buffer(&kbuf);
        if (r) {
+               pr_err("Failed to call kexec_add_buffer, ret=%d\n", r);
                kvfree((void *)kbuf.buffer);
                return r;
        }
-- 
2.53.0


Reply via email to