|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [mini-os master] Mini-OS: kexec: switch read-only area to be writable again
commit 3a86d33e78cfb49d7aad11e53c3c4c86260db539
Author: Juergen Gross <jgross@xxxxxxxx>
AuthorDate: Mon Jun 23 10:42:17 2025 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Jun 23 10:42:17 2025 +0200
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>
---
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 f4419d9..26ede6f 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 3b11a69..1ef7ce8 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();
--
generated by git-patchbot for /home/xen/git/mini-os.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |