[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [MINI-OS PATCH v2 10/12] Mini-OS: kexec: switch read-only area to be writable again
In order to allow writing the new kernel, make the readonly area covering current kernel text writable again. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Jason Andryuk <jason.andryuk@xxxxxxx> --- V2: - modify printk() statement (Jason Andryuk) --- arch/x86/mm.c | 3 ++- kexec.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm.c b/arch/x86/mm.c index f4419d95..26ede6f4 100644 --- a/arch/x86/mm.c +++ b/arch/x86/mm.c @@ -529,7 +529,8 @@ void change_readonly(bool readonly) #endif } - printk("setting %p-%p readonly\n", &_text, &_erodata); + printk("setting %p-%p %s\n", &_text, &_erodata, + readonly ? "readonly" : "writable"); walk_pt(start_address, ro.etext, change_readonly_func, &ro); #ifdef CONFIG_PARAVIRT diff --git a/kexec.c b/kexec.c index 3b11a69c..1ef7ce84 100644 --- a/kexec.c +++ b/kexec.c @@ -183,6 +183,8 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline) goto err; } + change_readonly(false); + ret = kexec_move_used_pages(kexec_last_addr, (unsigned long)kernel, kernel_size); if ( ret ) @@ -192,6 +194,7 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline) ret = ENOSYS; err: + change_readonly(true); unreserve_memory_below(); kexec_move_used_pages_undo(); kexec_get_entry_undo(); -- 2.43.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |