From: Baoquan He <bhe@redhat.com>
To: keescook@chromium.org, yinghai@kernel.org, hpa@zytor.com,
mingo@redhat.com, bp@suse.de, matt.fleming@intel.com,
vgoyal@redhat.com, tglx@linutronix.de
Cc: linux-kernel@vger.kernel.org, Baoquan He <bhe@redhat.com>
Subject: [Patch v3 2/7] x86, kaslr: Introduce struct slot_area to manage randomization slot info
Date: Sun, 8 Mar 2015 13:38:50 +0800 [thread overview]
Message-ID: <1425793135-2833-3-git-send-email-bhe@redhat.com> (raw)
In-Reply-To: <1425793135-2833-1-git-send-email-bhe@redhat.com>
Kernel is expected to be randomly reloaded anywhere in the whole
physical memory area, it could be near 64T at most. In this case
there could be about 4*1024*1024 randomization slots. Hence the
old slot array will cost too much memory and also not efficient
to store the slot information one by one into slot array.
Here introduce struct slot_area to manage randomization slot info
in one contiguous memory area excluding the avoid area. slot_areas
is used to store all slot area info. Since setup_data is a linked
list, could contain many datas by pointer to point one by one,
excluding them will split RAM memory into many smaller areas, here
only take the first 100 slot areas if too many of them.
Signed-off-by: Baoquan He <bhe@redhat.com>
---
arch/x86/boot/compressed/aslr.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/x86/boot/compressed/aslr.c b/arch/x86/boot/compressed/aslr.c
index 34eb652..c452a60 100644
--- a/arch/x86/boot/compressed/aslr.c
+++ b/arch/x86/boot/compressed/aslr.c
@@ -232,8 +232,20 @@ static bool mem_avoid_overlap(struct mem_vector *img)
static unsigned long slots[CONFIG_RANDOMIZE_BASE_MAX_OFFSET /
CONFIG_PHYSICAL_ALIGN];
+
+struct slot_area {
+ unsigned long addr;
+ int num;
+};
+
+#define MAX_SLOT_AREA 100
+
+static struct slot_area slot_areas[MAX_SLOT_AREA];
+
static unsigned long slot_max;
+static unsigned long slot_area_index;
+
static void slots_append(unsigned long addr)
{
/* Overflowing the slots list should be impossible. */
--
1.9.3
next prev parent reply other threads:[~2015-03-08 6:18 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-08 5:38 [Patch v3 0/7] randomize kernel physical address and virtual address separately Baoquan He
2015-03-08 5:38 ` [Patch v3 1/7] x86, kaslr: Fix a bug that relocation can not be handled when kernel is loaded above 2G Baoquan He
2015-03-08 5:38 ` Baoquan He [this message]
2015-03-08 5:38 ` [Patch v3 3/7] x86, kaslr: Add two functions which will be used later Baoquan He
2015-03-08 13:58 ` Alexander Kuleshov
2015-03-09 12:40 ` Baoquan He
2015-03-08 5:38 ` [Patch v3 4/7] x86, kaslr: Introduce fetch_random_virt_offset to randomize the kernel text mapping address Baoquan He
2015-03-08 5:38 ` [Patch v3 5/7] x86, kaslr: Randomize physical and virtual address of kernel separately Baoquan He
2015-03-08 5:38 ` [Patch v3 6/7] x86, kaslr: Add support of kernel physical address randomization above 4G Baoquan He
2015-03-08 5:38 ` [Patch v3 7/7] x86, kaslr: Remove useless codes Baoquan He
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=1425793135-2833-3-git-send-email-bhe@redhat.com \
--to=bhe@redhat.com \
--cc=bp@suse.de \
--cc=hpa@zytor.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt.fleming@intel.com \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=vgoyal@redhat.com \
--cc=yinghai@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®