Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753030AbdLEIyB (ORCPT ); Tue, 5 Dec 2017 03:54:01 -0500 Received: from mail.cn.fujitsu.com ([183.91.158.132]:45910 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752780AbdLEIwR (ORCPT ); Tue, 5 Dec 2017 03:52:17 -0500 X-IronPort-AV: E=Sophos;i="5.43,368,1503331200"; d="scan'208";a="30725600" From: Chao Fan To: , , , , , , , CC: , , , Chao Fan Subject: [PATCH v3 3/4] kaslr: disable memory mirror feature when movable_node specified Date: Tue, 5 Dec 2017 16:51:59 +0800 Message-ID: <20171205085200.9528-4-fanc.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171205085200.9528-1-fanc.fnst@cn.fujitsu.com> References: <20171205085200.9528-1-fanc.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain X-yoursite-MailScanner-ID: D1B85486A76B.ABC87 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: fanc.fnst@cn.fujitsu.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1474 Lines: 45 In kernel code, if movable_node specified, it will skip the mirror feature. So we should also skip mirror feature in kaslr. Signed-off-by: Chao Fan --- arch/x86/boot/compressed/kaslr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c index e3a3b6132da0..fc798d6d608d 100644 --- a/arch/x86/boot/compressed/kaslr.c +++ b/arch/x86/boot/compressed/kaslr.c @@ -677,6 +677,7 @@ static bool process_efi_entries(unsigned long minimum, unsigned long image_size) { struct efi_info *e = &boot_params->efi_info; + char *args = (char *)get_cmd_line_ptr(); bool efi_mirror_found = false; struct mem_vector region; efi_memory_desc_t *md; @@ -702,11 +703,15 @@ process_efi_entries(unsigned long minimum, unsigned long image_size) #endif nr_desc = e->efi_memmap_size / e->efi_memdesc_size; - for (i = 0; i < nr_desc; i++) { - md = efi_early_memdesc_ptr(pmap, e->efi_memdesc_size, i); - if (md->attribute & EFI_MEMORY_MORE_RELIABLE) { - efi_mirror_found = true; - break; + + /* Skip memory mirror if movabale_node or immovable_mem specified */ + if (!strstr(args, "movable_node") && !strstr(args, "immovable_mem")) { + for (i = 0; i < nr_desc; i++) { + md = efi_early_memdesc_ptr(pmap, e->efi_memdesc_size, i); + if (md->attribute & EFI_MEMORY_MORE_RELIABLE) { + efi_mirror_found = true; + break; + } } } -- 2.14.3