Re: [RFC v2 4/5] x86/crash: make the page that stores the LUKS volume key inaccessible

From: Coiby Xu
Date: Mon Nov 07 2022 - 06:26:37 EST


Hi Dave,

Thanks for the quick review!

On Fri, Nov 04, 2022 at 07:38:17AM -0700, Dave Hansen wrote:
On 11/4/22 04:29, Coiby Xu wrote:
+ if (kexec_crash_image->luks_volume_key_addr) {
+ start = kexec_crash_image->luks_volume_key_addr;
+ end = start + kexec_crash_image->luks_volume_key_sz - 1;
+ page = pfn_to_page(start >> PAGE_SHIFT);
+ nr_pages = (end >> PAGE_SHIFT) - (start >> PAGE_SHIFT) + 1;
+ set_memory_np((unsigned long)page_address(page), nr_pages);
+ }

Why does this go pfn -> page -> vaddr? What good does having the page
do?

Sorry it's an imitation of kexec_mark_crashkres.

Can you just do phys_to_virt() on the start address? Maybe:

start_paddr = kexec_crash_image->luks_volume_key_addr;
end_paddr = start_paddr + kexec_crash_image->luks_volume_key_sz - 1;
nr_pages = (PAGE_ALIGN(end_paddr) - PAGE_ALIGN_DOWN(start_paddr))/
PAGE_SIZE;
set_memory_np((unsigned long)phys_to_virt(start_paddr), nr_pages);

Thanks for suggesting a smarter implementation! I'll apply it to next
version.


Also, if you resend this, please just cc the x86 folks on the series.
The other patches and cover letter have desperately needed context
around this.

Sure, I'll cc the x86 list the complete patch set next time. Sorry
you'll have to go to
https://lore.kernel.org/lkml/20221104113000.487098-5-coxu@xxxxxxxxxx/t/
to read related emails for now.




--
Best regards,
Coiby