Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1153780ybi; Sun, 30 Jun 2019 08:35:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqw3J3E5wqkwwV9XoucaQPx5CD3g5+V8HfCUuERQr2WolV2KJCctKQEWgLH+1XX7LLfGItSi X-Received: by 2002:a63:c006:: with SMTP id h6mr19217854pgg.285.1561908920304; Sun, 30 Jun 2019 08:35:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561908920; cv=none; d=google.com; s=arc-20160816; b=ceRq4D9+QE5dvq+e4kWTqT27eoo9RaC3rDsyiLwnS6CvF6pjfz+qNrzdb+xnd1GsvB WX7lHd/JJPkIeIEgWu6mrw0FAU8EWzhue/6/Pu0UPQalKqYC5e0XD7hSBJYy8hYhfMAL p0s2730Ffxx/YzKQ0XR15q+sMUU1X+xeip/M0ebABIa71+iLvLYAbkeo28N6jrzNogIH ROqxrBvB6CIkqQd9CjFq5tg1qOFmVPVfnYcwTH919/0gM6t5ukpiw1yQ01JSw9R/du9k wLlI4k6iy9PxQCWtY1xH/4X6NQQH7V0B6BwKCF65buJm5wenJ/YLkHifURjv1ISbEXE+ lEig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject; bh=+eIE4UMWuvn+dB/KcPGcqchizSxk6gGQMuIYFXIBUG8=; b=DvoR7uNtm+UiO7u9L8lOFe/XIzwfr+NspTEYziy70jDL1Fdjnjzu8CCgsBGN5Drm/o 2eCsCusxOpy8ZzpY3o6ytkylR2HhJaWiGb6ts3AFVSKiUSXrJPzpLMDitMahF+w0P5ld amp2isAhJVFEW9yWxUuggEEAwz4CUtCjgaWL4qHWk15oyNgeRlR2Ug+hsHoJ1vdONOKc 7/RkYU45JiTiW617qfZpBoQA253NNUMZMR17hGnAoT3hm8G/rxTg8/ww/EegeugwsKNw F5xpgHovDmjbxw05rHbbW+YDr9hICYcaUz/MUMMti4Ztud51AfH1r7Y8EREtbOuqx78q ZP+w== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r8si7774140pjd.64.2019.06.30.08.35.03; Sun, 30 Jun 2019 08:35:20 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726641AbfF3Pe7 (ORCPT + 99 others); Sun, 30 Jun 2019 11:34:59 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:43203 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726513AbfF3Pe6 (ORCPT ); Sun, 30 Jun 2019 11:34:58 -0400 X-Originating-IP: 79.86.19.127 Received: from [192.168.0.12] (127.19.86.79.rev.sfr.net [79.86.19.127]) (Authenticated sender: alex@ghiti.fr) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 9122DE0004; Sun, 30 Jun 2019 15:34:41 +0000 (UTC) Subject: Re: [PATCH v4 00/14] Provide generic top-down mmap layout functions From: Alex Ghiti To: Paul Burton Cc: Albert Ou , Kees Cook , Catalin Marinas , Palmer Dabbelt , Will Deacon , Russell King , Ralf Baechle , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Luis Chamberlain , linux-riscv@lists.infradead.org, Alexander Viro , James Hogan , linux-fsdevel@vger.kernel.org, Andrew Morton , linux-mips@vger.kernel.org, Christoph Hellwig , linux-arm-kernel@lists.infradead.org References: <20190526134746.9315-1-alex@ghiti.fr> Message-ID: Date: Sun, 30 Jun 2019 11:34:40 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit Content-Language: sv-FI Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6/13/19 1:29 AM, Alex Ghiti wrote: > On 5/26/19 9:47 AM, Alexandre Ghiti wrote: >> This series introduces generic functions to make top-down mmap layout >> easily accessible to architectures, in particular riscv which was >> the initial goal of this series. >> The generic implementation was taken from arm64 and used successively >> by arm, mips and finally riscv. >> >> Note that in addition the series fixes 2 issues: >> - stack randomization was taken into account even if not necessary. >> - [1] fixed an issue with mmap base which did not take into account >> ?? randomization but did not report it to arm and mips, so by moving >> ?? arm64 into a generic library, this problem is now fixed for both >> ?? architectures. >> >> This work is an effort to factorize architecture functions to avoid >> code duplication and oversights as in [1]. >> >> [1]: >> https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1429066.html >> >> Changes in v4: >> ?? - Make ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT select >> ARCH_HAS_ELF_RANDOMIZE >> ???? by default as suggested by Kees, >> ?? - ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT depends on MMU and defines >> the >> ???? functions needed by ARCH_HAS_ELF_RANDOMIZE => architectures that >> use >> ???? the generic mmap topdown functions cannot have >> ARCH_HAS_ELF_RANDOMIZE >> ???? selected without MMU, but I think it's ok since randomization >> without >> ???? MMU does not add much security anyway. >> ?? - There is no common API to determine if a process is 32b, so I >> came up with >> ???? !IS_ENABLED(CONFIG_64BIT) || is_compat_task() in [PATCH v4 12/14]. >> ?? - Mention in the change log that x86 already takes care of not >> offseting mmap >> ???? base address if the task does not want randomization. >> ?? - Re-introduce a comment that should not have been removed. >> ?? - Add Reviewed/Acked-By from Paul, Christoph and Kees, thank you >> for that. >> ?? - I tried to minimize the changes from the commits in v3 in order >> to make >> ???? easier the review of the v4, the commits changed or added are: >> ???? - [PATCH v4 5/14] >> ???? - [PATCH v4 8/14] >> ???? - [PATCH v4 11/14] >> ???? - [PATCH v4 12/14] >> ???? - [PATCH v4 13/14] > > Hi Paul, > > Compared to the previous version you already acked, patches 11, 12 and 13 > would need your feedback, do you have time to take a look at them ? > > Hope I don't bother you, > > Thanks, > > Alex > Hi Paul, Would you have time to give your feedback on patches 11, 12 and 13 ? Thanks, Alex > >> >> Changes in v3: >> ?? - Split into small patches to ease review as suggested by Christoph >> ???? Hellwig and Kees Cook >> ?? - Move help text of new config as a comment, as suggested by >> Christoph >> ?? - Make new config depend on MMU, as suggested by Christoph >> >> Changes in v2 as suggested by Christoph Hellwig: >> ?? - Preparatory patch that moves randomize_stack_top >> ?? - Fix duplicate config in riscv >> ?? - Align #if defined on next line => this gives rise to a checkpatch >> ???? warning. I found this pattern all around the tree, in the same >> proportion >> ???? as the previous pattern which was less pretty: >> ???? git grep -C 1 -n -P "^#if defined.+\|\|.*\\\\$" >> >> Alexandre Ghiti (14): >> ?? mm, fs: Move randomize_stack_top from fs to mm >> ?? arm64: Make use of is_compat_task instead of hardcoding this test >> ?? arm64: Consider stack randomization for mmap base only when necessary >> ?? arm64, mm: Move generic mmap layout functions to mm >> ?? arm64, mm: Make randomization selected by generic topdown mmap layout >> ?? arm: Properly account for stack randomization and stack guard gap >> ?? arm: Use STACK_TOP when computing mmap base address >> ?? arm: Use generic mmap top-down layout and brk randomization >> ?? mips: Properly account for stack randomization and stack guard gap >> ?? mips: Use STACK_TOP when computing mmap base address >> ?? mips: Adjust brk randomization offset to fit generic version >> ?? mips: Replace arch specific way to determine 32bit task with generic >> ???? version >> ?? mips: Use generic mmap top-down layout and brk randomization >> ?? riscv: Make mmap allocation top-down by default >> >> ? arch/Kconfig?????????????????????? |? 11 +++ >> ? arch/arm/Kconfig?????????????????? |?? 2 +- >> ? arch/arm/include/asm/processor.h?? |?? 2 - >> ? arch/arm/kernel/process.c????????? |?? 5 -- >> ? arch/arm/mm/mmap.c???????????????? |? 52 -------------- >> ? arch/arm64/Kconfig???????????????? |?? 2 +- >> ? arch/arm64/include/asm/processor.h |?? 2 - >> ? arch/arm64/kernel/process.c??????? |?? 8 --- >> ? arch/arm64/mm/mmap.c?????????????? |? 72 ------------------- >> ? arch/mips/Kconfig????????????????? |?? 2 +- >> ? arch/mips/include/asm/processor.h? |?? 5 -- >> ? arch/mips/mm/mmap.c??????????????? |? 84 ---------------------- >> ? arch/riscv/Kconfig???????????????? |? 11 +++ >> ? fs/binfmt_elf.c??????????????????? |? 20 ------ >> ? include/linux/mm.h???????????????? |?? 2 + >> ? kernel/sysctl.c??????????????????? |?? 6 +- >> ? mm/util.c????????????????????????? | 107 ++++++++++++++++++++++++++++- >> ? 17 files changed, 137 insertions(+), 256 deletions(-) >> > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv