|
[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 |