Commit 5a82223e authored by David Woodhouse's avatar David Woodhouse Committed by Ingo Molnar
Browse files

x86/kexec: Mark relocate_kernel page as ROX instead of RWX



All writes to the page now happen before it gets marked as executable
(or after it's already switched to the identmap page tables where it's
OK to be RWX).

Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Cc: Baoquan He <bhe@redhat.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20241205153343.3275139-14-dwmw2@infradead.org
parent 93e489ad
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -323,7 +323,7 @@ int machine_kexec_prepare(struct kimage *image)

	__memcpy(control_page, __relocate_kernel_start, reloc_end - reloc_start);

	set_memory_x((unsigned long)control_page, 1);
	set_memory_rox((unsigned long)control_page, 1);

	return 0;
}
@@ -333,6 +333,7 @@ void machine_kexec_cleanup(struct kimage *image)
	void *control_page = page_address(image->control_code_page);

	set_memory_nx((unsigned long)control_page, 1);
	set_memory_rw((unsigned long)control_page, 1);

	free_transition_pgtable(image);
}