|
|
@@ -29,7 +29,7 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
|
|
|
int (*_machine_kexec_prepare)(struct kimage *) = NULL;
|
|
|
void (*_machine_kexec_shutdown)(void) = NULL;
|
|
|
-@@ -28,6 +25,99 @@ atomic_t kexec_ready_to_reboot = ATOMIC_
|
|
|
+@@ -28,6 +25,101 @@ atomic_t kexec_ready_to_reboot = ATOMIC_
|
|
|
void (*_crash_smp_send_stop)(void) = NULL;
|
|
|
#endif
|
|
|
|
|
|
@@ -81,7 +81,9 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
+ pr_warn("kexec command line truncated to %zd bytes\n", size);
|
|
|
+
|
|
|
+ /* Copy to kernel space */
|
|
|
-+ copy_from_user(kexec_argv_buf, buf, size);
|
|
|
++ if (copy_from_user(kexec_argv_buf, buf, size))
|
|
|
++ pr_warn("kexec command line copy to kernel space failed\n");
|
|
|
++
|
|
|
+ kexec_argv_buf[size - 1] = 0;
|
|
|
+}
|
|
|
+
|
|
|
@@ -129,7 +131,7 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
static void kexec_image_info(const struct kimage *kimage)
|
|
|
{
|
|
|
unsigned long i;
|
|
|
-@@ -52,6 +142,18 @@ int
|
|
|
+@@ -52,6 +144,18 @@ int
|
|
|
machine_kexec_prepare(struct kimage *kimage)
|
|
|
{
|
|
|
kexec_image_info(kimage);
|
|
|
@@ -148,7 +150,7 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
|
|
|
if (_machine_kexec_prepare)
|
|
|
return _machine_kexec_prepare(kimage);
|
|
|
-@@ -89,10 +191,12 @@ machine_kexec(struct kimage *image)
|
|
|
+@@ -89,10 +193,12 @@ machine_kexec(struct kimage *image)
|
|
|
unsigned long *ptr;
|
|
|
|
|
|
reboot_code_buffer =
|
|
|
@@ -162,7 +164,7 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
|
|
|
if (image->type == KEXEC_TYPE_DEFAULT) {
|
|
|
kexec_indirection_page =
|
|
|
-@@ -100,9 +204,19 @@ machine_kexec(struct kimage *image)
|
|
|
+@@ -100,9 +206,19 @@ machine_kexec(struct kimage *image)
|
|
|
} else {
|
|
|
kexec_indirection_page = (unsigned long)&image->head;
|
|
|
}
|
|
|
@@ -184,7 +186,7 @@ Signed-off-by: Yousong Zhou <[email protected]>
|
|
|
|
|
|
/*
|
|
|
* The generic kexec code builds a page list with physical
|
|
|
-@@ -124,15 +238,16 @@ machine_kexec(struct kimage *image)
|
|
|
+@@ -124,15 +240,16 @@ machine_kexec(struct kimage *image)
|
|
|
/*
|
|
|
* we do not want to be bothered.
|
|
|
*/
|