From patchwork Tue Dec 4 07:39:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alison Schofield X-Patchwork-Id: 10711195 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D27D017D5 for ; Tue, 4 Dec 2018 07:37:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C1A662A46B for ; Tue, 4 Dec 2018 07:37:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B581F2A53E; Tue, 4 Dec 2018 07:37:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 538E82A544 for ; Tue, 4 Dec 2018 07:37:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5942A6B6D8E; Tue, 4 Dec 2018 02:37:26 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4FAA26B6D8F; Tue, 4 Dec 2018 02:37:26 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D9DB6B6D8F; Tue, 4 Dec 2018 02:37:26 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id EEC0B6B6D89 for ; Tue, 4 Dec 2018 02:37:25 -0500 (EST) Received: by mail-pl1-f198.google.com with SMTP id c14so11918984pls.21 for ; Mon, 03 Dec 2018 23:37:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:in-reply-to :references; bh=WybEUEiDuAjjd0vP2dWpp/whbcHNaigXIsPAjqgoO/w=; b=qYXDMrTlVU9DxV0g4p/l5UJKV3RoTJdbQehSE0mPcIdLiLCebcPYLmWyq0NCB5lfPS Q4cP71JA2wa5EbjnVwAxGWLZWm3RQaSKDn5XdFFY3TyLsX8g5ouFSv4vZDGG2iY58udL RnwdIRvDfl2aYZKyBdRRu6FGVvlrI1m+dcYkUYXy3tNIjBvF1UPsSaUAZ8uohhBrXD47 aH/cE9arrZmt8MubTCa2UByVW3ZBsiTvEcPFe+9XJpU99I5Pli/emrDNz7nX4xD2aDeE cIZ2b5IkuGKwtYBTzrIiF0X0MUgsdWXPV3x2ZR/sfo4M8ImMq2V+wRLe+AhrgHoPUl+0 XaZA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of alison.schofield@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=alison.schofield@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Gm-Message-State: AA+aEWbfaCCF1tAnzhL9krqiUJOlykKvA1LoaQqfascueIfDJvsZ+6/U EjVSDvQ5UW42sRY2uqW5U5isKm0yA4zeAmYREMpXQ5Iql2c5Dkp62jkJIyR6g4P+1FqCn0D8hTY 7Cu0OMN1S3FoeDnRUgtKHttqNZW6s2UcowtX4sZdO3Kx0gzChjgzJq4XhnO6OECD1UQ== X-Received: by 2002:a63:2f86:: with SMTP id v128mr15322367pgv.407.1543909045630; Mon, 03 Dec 2018 23:37:25 -0800 (PST) X-Google-Smtp-Source: AFSGD/UefBAm3v0T5zElooVmroLKnknX+nF0tZZFn0UpenDfjY8/CBWMqj4qwdsxDcufIBEWfF9l X-Received: by 2002:a63:2f86:: with SMTP id v128mr15322339pgv.407.1543909044856; Mon, 03 Dec 2018 23:37:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543909044; cv=none; d=google.com; s=arc-20160816; b=il1Tkwrf45DJSwCAeQycFq7OWI4mp1HHuZSrwTjV1BrQnWw+W00KFtkFGlhuFVbBaL f+s6GYecFY5sY+CG8mv4n6Ue4mSsK2+SyArqynyHsZCby9PXeIVvKG+ZO38uAFseuk+W ilCOH+gV2ouzUTJYn+/lGHtyQrn9Hovm7HKaa8uMxIMeO0p+99kOupab7g0bVEgLGzuy zhtEdUZ1gRz0yoPKHls8vFyO3CwfQ4hpOhf7tTxvffOhjpWFZZrIUi4Ableex1kG7SJ1 YdTKwpADhCfYSL9KaAVWsJoMbmmU6F6Ra1gGr6r5mH/4tk3xSBOXjcQD+Pe99qAxg5Yd l4+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:cc:to:from; bh=WybEUEiDuAjjd0vP2dWpp/whbcHNaigXIsPAjqgoO/w=; b=PDd2tzZwQ9WAJtOqv8NIeVLOk2zGpdKbozwwUID3n5lykH4wDiFTLXXbgrZggnLbli 3fP5sdckX5YzTgBNbCE2IIdXC8BnEe8IPGz4DtVS8mrXZvg8UGpsiXBrYY61unjnAKhG A9ClPgOgQIfLMAMJXiyDO67sj1iFFuzOt33eZNqlwhqI4/RCAD97MHPfyx+pjjt9WXKP 4LkHbkJiPjicCPKhxmugg+1HRmeX2xagFAn9n7bHWOLuyD+rruwniRF4ZGcetUw5oh4D RuX2l0BfGOT/X0Kqr4wgeBVlcy/cBtVJSBAMnty6frQLh3iwtL9xxH1P3DIVDymRg5P8 ukXA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of alison.schofield@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=alison.schofield@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga07.intel.com (mga07.intel.com. [134.134.136.100]) by mx.google.com with ESMTPS id q16si15649055pfh.138.2018.12.03.23.37.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Dec 2018 23:37:24 -0800 (PST) Received-SPF: pass (google.com: domain of alison.schofield@intel.com designates 134.134.136.100 as permitted sender) client-ip=134.134.136.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of alison.schofield@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=alison.schofield@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Dec 2018 23:37:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,313,1539673200"; d="scan'208";a="98463926" Received: from alison-desk.jf.intel.com (HELO alison-desk) ([10.54.74.53]) by orsmga008.jf.intel.com with ESMTP; 03 Dec 2018 23:37:22 -0800 From: Alison Schofield To: dhowells@redhat.com, tglx@linutronix.de Cc: jmorris@namei.org, mingo@redhat.com, hpa@zytor.com, bp@alien8.de, luto@kernel.org, peterz@infradead.org, kirill.shutemov@linux.intel.com, dave.hansen@intel.com, kai.huang@intel.com, jun.nakajima@intel.com, dan.j.williams@intel.com, jarkko.sakkinen@intel.com, keyrings@vger.kernel.org, linux-security-module@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Subject: [RFC v2 02/13] mm: Generalize the mprotect implementation to support extensions Date: Mon, 3 Dec 2018 23:39:49 -0800 Message-Id: <3389bc8e46479ba102f88c157aebd49b905ac289.1543903910.git.alison.schofield@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Today mprotect is implemented to support legacy mprotect behavior plus an extension for memory protection keys. Make it more generic so that it can support additional extensions in the future. This is done is preparation for adding a new system call for memory encyption keys. The intent is that the new encrypted mprotect will be another extension to legacy mprotect. Change-Id: Ib09b9d1b605b12d0254d7fb4968dfcc8e3c79dd7 Signed-off-by: Alison Schofield Signed-off-by: Kirill A. Shutemov --- mm/mprotect.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/mprotect.c b/mm/mprotect.c index df408956dccc..b57075e278fb 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -35,6 +35,8 @@ #include "internal.h" +#define NO_KEY -1 + static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, unsigned long end, pgprot_t newprot, int dirty_accountable, int prot_numa) @@ -451,9 +453,9 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, } /* - * pkey==-1 when doing a legacy mprotect() + * When pkey==NO_KEY we get legacy mprotect behavior here. */ -static int do_mprotect_pkey(unsigned long start, size_t len, +static int do_mprotect_ext(unsigned long start, size_t len, unsigned long prot, int pkey) { unsigned long nstart, end, tmp, reqprot; @@ -577,7 +579,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, unsigned long, prot) { - return do_mprotect_pkey(start, len, prot, -1); + return do_mprotect_ext(start, len, prot, NO_KEY); } #ifdef CONFIG_ARCH_HAS_PKEYS @@ -585,7 +587,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, SYSCALL_DEFINE4(pkey_mprotect, unsigned long, start, size_t, len, unsigned long, prot, int, pkey) { - return do_mprotect_pkey(start, len, prot, pkey); + return do_mprotect_ext(start, len, prot, pkey); } SYSCALL_DEFINE2(pkey_alloc, unsigned long, flags, unsigned long, init_val)