On 10/29/24 at 01:52pm, Coiby Xu wrote: ...... > +int crash_load_dm_crypt_keys(struct kimage *image) > +{ > + struct kexec_buf kbuf = { > + .image = image, > + .buf_min = 0, > + .buf_max = ULONG_MAX, > + .top_down = false, > + .random = true, > + }; > + int r; > + > + > + if (key_count <= 0) { > + kexec_dprintk("No dm-crypt keys\n"); > + return -EINVAL; > + } > + > + image->dm_crypt_keys_addr = 0; > + r = build_keys_header(); > + if (r) > + return r; > + > + kbuf.buffer = keys_header; > + kbuf.bufsz = get_keys_header_size(key_count); > + > + kbuf.memsz = kbuf.bufsz; > + kbuf.buf_align = ELF_CORE_HEADER_ALIGN; > + kbuf.mem = KEXEC_BUF_MEM_UNKNOWN; > + r = kexec_add_buffer(&kbuf); > + if (r) { > + kvfree((void *)kbuf.buffer); > + return r; > + } > + image->dm_crypt_keys_addr = kbuf.mem; > + image->dm_crypt_keys_sz = kbuf.bufsz; Wondering why not assigning kbuf.memsz, but bufsz. > + kexec_dprintk( > + "Loaded dm crypt keys to kexec_buffer bufsz=0x%lx memsz=0x%lx\n", > + kbuf.bufsz, kbuf.bufsz); > + > + return r; > +} > + > + > static int __init configfs_dmcrypt_keys_init(void) > { > int ret; > -- > 2.47.0 >