From: Huang Ying <ying.huang@intel.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
Pavel Machek <pavel@ucw.cz>,
nigel@nigel.suspend2.net, "Rafael J. Wysocki" <rjw@sisk.pl>,
Andrew Morton <akpm@linux-foundation.org>,
Vivek Goyal <vgoyal@redhat.com>,
mingo@elte.hu, Linus Torvalds <torvalds@linux-foundation.org>
Cc: Kexec Mailing List <kexec@lists.infradead.org>,
linux-kernel@vger.kernel.org
Subject: [PATCH 2/6] kexec jump: check code size in control page
Date: Thu, 07 Aug 2008 17:05:26 +0800 [thread overview]
Message-ID: <1218099926.5164.33.camel@caritas-dev.intel.com> (raw)
Kexec/Kexec-jump requires code size in control page is less than
PAGE_SIZE/2. This patch adds runtime checking for this.
Signed-off-by: Huang Ying <ying.huang@intel.com>
---
arch/x86/kernel/machine_kexec_32.c | 4 ++++
arch/x86/kernel/relocate_kernel_32.S | 3 +++
include/asm-x86/kexec.h | 1 +
3 files changed, 8 insertions(+)
--- a/arch/x86/kernel/machine_kexec_32.c
+++ b/arch/x86/kernel/machine_kexec_32.c
@@ -92,6 +92,10 @@ int machine_kexec_prepare(struct kimage
{
if (nx_enabled)
set_pages_x(image->control_code_page, 1);
+
+ BUG_ON((unsigned long)kexec_control_page_code_end - \
+ (unsigned long)relocate_kernel >= PAGE_SIZE/2);
+
return 0;
}
--- a/arch/x86/kernel/relocate_kernel_32.S
+++ b/arch/x86/kernel/relocate_kernel_32.S
@@ -376,3 +376,6 @@ swap_pages:
popl %ebx
popl %ebp
ret
+
+ .globl kexec_control_page_code_end
+kexec_control_page_code_end:
--- a/include/asm-x86/kexec.h
+++ b/include/asm-x86/kexec.h
@@ -159,6 +159,7 @@ relocate_kernel(unsigned long indirectio
unsigned long start_address,
unsigned int has_pae,
unsigned int preserve_context);
+void kexec_control_page_code_end(void);
#else
NORET_TYPE void
relocate_kernel(unsigned long indirection_page,
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Huang Ying <ying.huang@intel.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
Pavel Machek <pavel@ucw.cz>,
nigel@nigel.suspend2.net, "Rafael J. Wysocki" <rjw@sisk.pl>,
Andrew Morton <akpm@linux-foundation.org>,
Vivek Goyal <vgoyal@redhat.com>,
mingo@elte.hu, Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
Kexec Mailing List <kexec@lists.infradead.org>
Subject: [PATCH 2/6] kexec jump: check code size in control page
Date: Thu, 07 Aug 2008 17:05:26 +0800 [thread overview]
Message-ID: <1218099926.5164.33.camel@caritas-dev.intel.com> (raw)
Kexec/Kexec-jump requires code size in control page is less than
PAGE_SIZE/2. This patch adds runtime checking for this.
Signed-off-by: Huang Ying <ying.huang@intel.com>
---
arch/x86/kernel/machine_kexec_32.c | 4 ++++
arch/x86/kernel/relocate_kernel_32.S | 3 +++
include/asm-x86/kexec.h | 1 +
3 files changed, 8 insertions(+)
--- a/arch/x86/kernel/machine_kexec_32.c
+++ b/arch/x86/kernel/machine_kexec_32.c
@@ -92,6 +92,10 @@ int machine_kexec_prepare(struct kimage
{
if (nx_enabled)
set_pages_x(image->control_code_page, 1);
+
+ BUG_ON((unsigned long)kexec_control_page_code_end - \
+ (unsigned long)relocate_kernel >= PAGE_SIZE/2);
+
return 0;
}
--- a/arch/x86/kernel/relocate_kernel_32.S
+++ b/arch/x86/kernel/relocate_kernel_32.S
@@ -376,3 +376,6 @@ swap_pages:
popl %ebx
popl %ebp
ret
+
+ .globl kexec_control_page_code_end
+kexec_control_page_code_end:
--- a/include/asm-x86/kexec.h
+++ b/include/asm-x86/kexec.h
@@ -159,6 +159,7 @@ relocate_kernel(unsigned long indirectio
unsigned long start_address,
unsigned int has_pae,
unsigned int preserve_context);
+void kexec_control_page_code_end(void);
#else
NORET_TYPE void
relocate_kernel(unsigned long indirection_page,
next reply other threads:[~2008-08-07 9:05 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-07 9:05 Huang Ying [this message]
2008-08-07 9:05 ` [PATCH 2/6] kexec jump: check code size in control page Huang Ying
2008-08-07 9:21 ` Pavel Machek
2008-08-07 9:21 ` Pavel Machek
2008-08-07 13:15 ` Vivek Goyal
2008-08-07 13:15 ` Vivek Goyal
2008-08-07 20:31 ` Pavel Machek
2008-08-07 20:31 ` Pavel Machek
2008-08-08 2:44 ` Huang Ying
2008-08-08 2:44 ` Huang Ying
2008-08-08 13:52 ` Vivek Goyal
2008-08-08 13:52 ` Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1218099926.5164.33.camel@caritas-dev.intel.com \
--to=ying.huang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nigel@nigel.suspend2.net \
--cc=pavel@ucw.cz \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.