Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2850011yba; Mon, 15 Apr 2019 22:27:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqxfBROu8ZmdVXSZGwN0/bIDRBycP7bcgKBNk5elz2OqCv1tB/+gaUe6ogSfh1Cq3UZPsrfU X-Received: by 2002:a62:ed10:: with SMTP id u16mr81270412pfh.187.1555392460828; Mon, 15 Apr 2019 22:27:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555392460; cv=none; d=google.com; s=arc-20160816; b=gKQQe1jZQfV0hCWxHkjpnoz1ErdCRASLh+3WM/w4wNHg/Jlw+beLF07xeKJ8iFu5te TNQr7txKk4OjBw04AqI8+9pB1YGAo9ZN4HHfZ/PGTmLYQOkxZX+fmycBKBikBtZZQ2IV nlcA8+qf4h5IwcVFnm9VjMF5zY6o5bBuDJjYgqBT26mBbTYE/RLjtAAvGjyQSI7VFCz/ EjMebmmrfSSK0W2y6JCPZxSJ7q043PmVg5iacfPT1MQrOBFvdYNOGREQ3MS2oZfvQIzH MUsydaaX6FgXQfGEyV1YCFOwaMb7UqXfPL5s7+qB+mIXPSazQ9dWtH/LsEuXG3f9dser 4STQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=wSYFPZsuygOoy6qVoHRdTD0eecXLgTWkf1fF93D5ArI=; b=GGUBq8w/xGjyPrU2GcpN77dfaipDbAvqr/L0GXf0s4P4eljslz2LOZIqIRr8W0CEoM 6sQW9NKCzogG5+S3Z7AU0stnSFBoCxlWqoX85vjhrioWloK35Vx8aQuch8tcXsswgYl8 iEL8jXlO+qMq7BJj+WTHjMERn6pW02NitS6+wkTyK0zuyi7tS0/cIYfyr3YsPmoHZUAK pwpiIeIuFwRU0hMH4CEFb8EPg9zh73EEUMdHGBkaFHKkicZJreBSlbNAP55wiogV7gwM Bgwgmnzi7ce6TCS5C3wS9Htkq9Egaujodds4bxs+0VC19Dq1xeY8amUUQ8ApcpZmhkQR E++w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="iq6ex/zt"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f20si47477860pfd.51.2019.04.15.22.27.24; Mon, 15 Apr 2019 22:27:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="iq6ex/zt"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726751AbfDPF0M (ORCPT + 99 others); Tue, 16 Apr 2019 01:26:12 -0400 Received: from mail-vs1-f66.google.com ([209.85.217.66]:44874 "EHLO mail-vs1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725830AbfDPF0M (ORCPT ); Tue, 16 Apr 2019 01:26:12 -0400 Received: by mail-vs1-f66.google.com with SMTP id j184so10818565vsd.11 for ; Mon, 15 Apr 2019 22:26:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wSYFPZsuygOoy6qVoHRdTD0eecXLgTWkf1fF93D5ArI=; b=iq6ex/ztcBBjmyWJkRDzDRheabCvVhqZ4aBUg+MF6YDPB+VwE9+zAPyILCfdoS9kTX +05Na0Z8mK54KOnjsfSKTpw0KjVa8L6MYaujwLV5Us6Tc1/uMnsIZmGNw/55Hd0gSFLX e7l3tHsNhrWhuvj6ClET2UkmnanmBwpBsOyrZtqvR8boMCfgivNeonvz1J08NTfTereM rZ+okabsEfa2WlT6Z3hltCOnVZTzUuz6d5Gqw90GVTkHsbAIz3pyb7Advc7XlaivueAY GJa+sLWqUueKbOkJwV00UHzbx3OdFodRk/DQ8K8HrzFAUCncGtsPxu93UNAs2lxVbeC4 e/wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wSYFPZsuygOoy6qVoHRdTD0eecXLgTWkf1fF93D5ArI=; b=W7HagnKNJ/1bgxVBww7YHcf0LXVftSToJKsJxZOsYeDQL3EwOHxyoXh3JWoCm4Xst8 b8ba0ttKBFsHHkDA4AOdCjRNii4p2hTY5x3mHvH0Lgmkd84+aaDWTE0adqT2/jXRhD6r 2aBsf4IY0Lcf6P3IqRxqO1fziBAhLHTZQbMIyfr//IF95wIzJvBmo/VmgCJCSnvHef03 PbwrGKbPVwDwerY87SE6j99LK3zSlPRKrz2ZO8ZedKHH/cVX4Y+N4bBzr5FRzO/TOl0g rdanN5p+V79dOipigb0jnwUZSwBfuasNxEqNJTjB7eCGllwDM6RuDh31eYBf6L3m9+K3 bvfg== X-Gm-Message-State: APjAAAXmxYObcmuEJctZaFe5/3X+5Z02FhaX9VQs+CzTdj/ST5EAepb/ zXPcfu5eO4EaTmyCZR/QtL8WqxolVHlfWaA+dF4= X-Received: by 2002:a67:870a:: with SMTP id j10mr41704482vsd.161.1555392371376; Mon, 15 Apr 2019 22:26:11 -0700 (PDT) MIME-Version: 1.0 References: <20190408163319.10382-1-vichy.kuo@gmail.com> In-Reply-To: <20190408163319.10382-1-vichy.kuo@gmail.com> From: pierre kuo Date: Tue, 16 Apr 2019 13:26:00 +0800 Message-ID: Subject: Re: [PATCH v3 1/2] kaslr: shift linear region randomization ahead of memory_limit To: Will Deacon Cc: Catalin Marinas , Steven Price , Florian Fainelli , Ard Biesheuvel , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hi will and all: > > The following is schematic diagram of the program before and after the > modification. > > Before: > if (memstart_addr + linear_region_size < memblock_end_of_DRAM()) {} --(a) > if (memory_limit != PHYS_ADDR_MAX) {} --(b) > if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {} --(c) > if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) {} --(d)* > > After: > if (memstart_addr + linear_region_size < memblock_end_of_DRAM()) {} --(a) > if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) {} --(d)* > if (memory_limit != PHYS_ADDR_MAX) {} --(b) > if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && phys_initrd_size) {} --(c) > > After grouping modification of memstart_address by moving linear region > randomization ahead of memory_init, driver can safely using macro, > __phys_to_virt, in (b) or (c), if necessary. > > Signed-off-by: pierre Kuo > --- > Changes in v2: > - add Fixes tag > > Changes in v3: > - adding patch of shifting linear region randomization ahead of > memory_limit > > arch/arm64/mm/init.c | 33 +++++++++++++++++---------------- > 1 file changed, 17 insertions(+), 16 deletions(-) > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index 7205a9085b4d..5142020fc146 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -389,6 +389,23 @@ void __init arm64_memblock_init(void) > memblock_remove(0, memstart_addr); > } > > + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { > + extern u16 memstart_offset_seed; > + u64 range = linear_region_size - > + (memblock_end_of_DRAM() - memblock_start_of_DRAM()); > + > + /* > + * If the size of the linear region exceeds, by a sufficient > + * margin, the size of the region that the available physical > + * memory spans, randomize the linear region as well. > + */ > + if (memstart_offset_seed > 0 && range >= ARM64_MEMSTART_ALIGN) { > + range /= ARM64_MEMSTART_ALIGN; > + memstart_addr -= ARM64_MEMSTART_ALIGN * > + ((range * memstart_offset_seed) >> 16); > + } > + } > + > /* > * Apply the memory limit if it was set. Since the kernel may be loaded > * high up in memory, add back the kernel region that must be accessible > @@ -428,22 +445,6 @@ void __init arm64_memblock_init(void) > } > } > > - if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { > - extern u16 memstart_offset_seed; > - u64 range = linear_region_size - > - (memblock_end_of_DRAM() - memblock_start_of_DRAM()); > - > - /* > - * If the size of the linear region exceeds, by a sufficient > - * margin, the size of the region that the available physical > - * memory spans, randomize the linear region as well. > - */ > - if (memstart_offset_seed > 0 && range >= ARM64_MEMSTART_ALIGN) { > - range /= ARM64_MEMSTART_ALIGN; > - memstart_addr -= ARM64_MEMSTART_ALIGN * > - ((range * memstart_offset_seed) >> 16); > - } > - } > > /* > * Register the kernel text, kernel data, initrd, and initial Would you mind to give some comment and suggestion for these v3 patches? https://lkml.org/lkml/2019/4/8/682 https://lkml.org/lkml/2019/4/8/683 Sincerely appreciate your kind help,