Skip to content

Commit

Permalink
sh: disallow kexec virtual entry
Browse files Browse the repository at this point in the history
Older versions of kexec-tools has a zImage loader that
passes a virtual address as entry point. The elf loader
otoh it passes a physical address as entry point, and
pages are always passed as physical addresses as well.

Only allow physical addresses from now on.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Mar 20, 2009
1 parent 7e6b6f2 commit 615e73b
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion arch/sh/kernel/machine_kexec.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ void machine_crash_shutdown(struct pt_regs *regs)
*/
int machine_kexec_prepare(struct kimage *image)
{
/* older versions of kexec-tools are passing
* the zImage entry point as a virtual address.
*/
if (image->start != PHYSADDR(image->start))
return -EINVAL; /* upgrade your kexec-tools */

return 0;
}

Expand Down Expand Up @@ -125,7 +131,8 @@ void machine_kexec(struct kimage *image)

/* now call it */
rnk = (relocate_new_kernel_t) reboot_code_buffer;
(*rnk)(page_list, reboot_code_buffer, image->start);
(*rnk)(page_list, reboot_code_buffer,
(unsigned long)phys_to_virt(image->start));

#ifdef CONFIG_KEXEC_JUMP
asm volatile("ldc %0, vbr" : : "r" (&vbr_base) : "memory");
Expand Down

0 comments on commit 615e73b

Please sign in to comment.