From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0B34C76188 for ; Mon, 3 Apr 2023 22:28:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 48AE7900003; Mon, 3 Apr 2023 18:28:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 412B1900002; Mon, 3 Apr 2023 18:28:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 23D23900003; Mon, 3 Apr 2023 18:28:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 122D0900002 for ; Mon, 3 Apr 2023 18:28:48 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id CF4B01A05D2 for ; Mon, 3 Apr 2023 22:28:47 +0000 (UTC) X-FDA: 80641520694.02.E492A46 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf24.hostedemail.com (Postfix) with ESMTP id ED5EA180010 for ; Mon, 3 Apr 2023 22:28:45 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=jnlFG6Zn; spf=pass (imf24.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680560926; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xOkGNKrS3X8eAh/4YCdQnl8x0t7nmqXgWQ3n3gC1iCs=; b=7rqKo7oZBHlh/xbSr39Sl4GAjPi8IqDpyej3VcVY6rECYciydlUCSLrkWdKTDa1QJbG4BN B8bNnjsdGk0eDQk2t3WjeGFV0D6QYqRcVGvZdldxsuvgTLXwKi4kY2c7LFOcgr2r167nAL bsHpW8idxbJBRbrT0wn4cR9dJrsTrEw= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=jnlFG6Zn; spf=pass (imf24.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680560926; a=rsa-sha256; cv=none; b=vPjUSXuBmWoJLJBXJf8ydIwml90q6Ym9jkuUZWXqqA60k2RELtaIIjJs1ZzRspPddbBvbz CWIOsaoDpuC9pXytyGKxBU5gh1bLez25KEttMTQX3L32Iz8hsmR0yk/C2nlFKKF52x6qnz T9eq125o2YsTe1Ir7n3UR6wE5mtrnws= Received: by mail-wm1-f45.google.com with SMTP id s13so17917541wmr.4 for ; Mon, 03 Apr 2023 15:28:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680560924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xOkGNKrS3X8eAh/4YCdQnl8x0t7nmqXgWQ3n3gC1iCs=; b=jnlFG6Zns7WaDQp/BY3IPGn+pGG/Dx9g0H40O2QA6832a7BPjAtYRm4G4MU4TCvHtl m/M02a7CdS7+AigaUke7H8ep9j7A5R9R/XhipaYu9lQsd5SPnAP2H2bDlxqoD+KlIn2d G6H1WgZqCYZ6Ypy1J/lCJ67//GxRrZ6s9WAl1Oo5uDmjsg7e/4mApHDMq8oFvtz6xVi9 idOLsR399TXIN2Sh1PxMVPmxPiUkEUv7LeHNU8flh0z5OCl0NpPnCea4mWhcTmLEHo8Z 1ZuGn9j1RokAD13ddtIMcYwzVgBeCIp4ej0FPNh+jpmCNO9mn1R0kjvTj0deKR5odtHi 480w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680560924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xOkGNKrS3X8eAh/4YCdQnl8x0t7nmqXgWQ3n3gC1iCs=; b=z6Ypkl+kns79Be/z/jPbR+radyE+Wai4Ausk3fK6nh5HypmUZ6taeNln1LqmcSDwA3 u3QD80VHOSXMPpnEzEkT3iqI8Z0tlGc6NJw5yjTSHX+PL9CxORSOjRbp+HzUy+D9QsEj cZsUhzPgsjVhkMtlw8uG4+nzYOQZEBhia0YONZbOG+EZ5+WaSozvzDeSSr2ven8ZayJb ZUsFCFAfV7OgNYTGjINgFMRYGVVqi/F7hwUrwEUZfoywaTdz9PSpw9f68K9TPer0EngP ubQfI5sIsl+27AI6PZukmzwGndYl2iMRl2TNuOP7XRsaPIMvHRHIndZ5NG6KkCCHSsvL j2Pw== X-Gm-Message-State: AAQBX9cjYPuOQ8yfBN4gKhxCqK9TrisMEloBaN+Ne9P41XgQsLkq0iiM OF1MUddcfsZL+VaN608Utp8ZQ0pdWwY= X-Google-Smtp-Source: AKy350Z/FSj711UfPkBNuLid9fhkpzpeDavb2nQlLtZkylTV4lV9oCldNngP7ESdTiD6fR3iiF2f/g== X-Received: by 2002:a05:600c:218d:b0:3ee:36f:3485 with SMTP id e13-20020a05600c218d00b003ee036f3485mr657646wme.8.1680560924213; Mon, 03 Apr 2023 15:28:44 -0700 (PDT) Received: from lucifer.home (host86-156-84-164.range86-156.btcentralplus.com. [86.156.84.164]) by smtp.googlemail.com with ESMTPSA id u17-20020a05600c19d100b003dd1bd0b915sm20731309wmq.22.2023.04.03.15.28.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Apr 2023 15:28:43 -0700 (PDT) From: Lorenzo Stoakes To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton Cc: Matthew Wilcox , Mike Kravetz , Muchun Song , Alexander Viro , Christian Brauner , Andy Lutomirski , Lorenzo Stoakes Subject: [RFC PATCH 2/3] mm: update seal_check_[future_]write() to include F_SEAL_WRITE as well Date: Mon, 3 Apr 2023 23:28:31 +0100 Message-Id: <75478249600532faab441e43f73d4d04582efcc3.1680560277.git.lstoakes@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: ED5EA180010 X-Rspam-User: X-Stat-Signature: owd4kbnh3qmr7g5yg64id9ik1zffhz4g X-HE-Tag: 1680560925-833817 X-HE-Meta: U2FsdGVkX18fUhqtV0E2ASMbPNfYR1QTW+fMQMAegsiqWYwHySgoFWBUj5zdKoaKz3miahIPTMCQ1jLj1WRO4aaoPt3J4StjeOrYszjyYyFyBVurTU7Sfq0o/DsQd5XXFWlRKvz3BaxnKxpYaipvjlWiSKZ62IRIdMRCqeinMwPSdf3tTbY2cMUu25jwcE33NsiXHGnE8y+q9p6m/DeF+kYIUFnSPM4MwWP4m1ZPBv4ikPLE8AcVuPFmo1N5ZnnUjMkZvEqieLtHbpk+zyCak3wIjqmAi7gfwaPKhictTxglIV98nSquOEF1XXuv/gGAs+H8uFYQ2awVXy9kwlEYkezbZ86P/PAYNaasuytV8wmDCf6afUet7xd5e2ZR2oAeKTOKu090x7NpaU0yB+1vIXV+agCoF3AiHcGQmACoT4kzLru9EGZFqi3c14RoL90uJr76rvvtYsvrboa/oK3o3s2oI4/havxXE9YcOPdbItxAQvFtbO6CpotLxpgmXNpQuO+KfPBz+ERdri4cIZ5+Uf45gdBVmuHoMdpo8YfGTRnIEJCFmtNN/C7QtrUwzd/JdW3u8VOANafO8OiG+xPnBVrOkzq2eHIzHmvERDLJ449bh4XgLj8aov5TC67I/k0m6gNq4XXmNe2qQep42nfiha08/NR7QK1RH1F5m7vFL/k2vy6g1cVlAgY2i7r6tLvFBfRQ/0QpTKlm57aOsjIOh6W7cMwFzYWK1Ly3+8dNvPdoGmjuQkcOQv6C1ft1qhzkdWJ+aQCkj26pNSmcO2zksptnn4xDXbxik370JcelFF8RtHhv9xuO8oHkxqPDxqCezfPjIa1N9nI01z+jOMTz2su5iRivSHgec6T4lqc2fDy901t7rhSqI4/wlnelW2F8IvzGAQkyupVoIlHAdyP9udywjne04TL/F9RjH7wwyB9bdcYjxdiQWMY3TdsSO5Xz/SxPQ8NdIdlFxaphv81 MS0ViUTf ykyV1OoJh3+TXAmaAi/N0BwPzHrim7w7ipMdNyZTznTqZHstBBSkrqWKWPz6VPD0x1zGOKJxCfKG1S2Y258/3BjNTXcyyEQ+jM/IbzN1hXbVkdKCzsSXPT0fI0MUVWbQx2Mq+K3dQUXc4GG4EdmleGqpoDAFyEyi2foWolTf3gJN75bBfa45rbTYEwyQ/ruMZDywSOkNiUTY0oIPSqA3nIKSS8KSl4qTf97q45stnHpjrkl5Wjci/93q0WvS8An4f9r9mBvsNoK9aViDmU9s9CZtNo3ZUTGdh3Z9DPVxd9HJrsbvF8I4y2gPNADbuRnTsmycPECAd8MybxqZCoeQUmeT83c0RmX8R4dPwU7ur9EznE0w/MMLsXUw76TRWedLriwEi8vCn7xZQLFtCSwZv8BYiRRunQoLkk5sL 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: Check for F_SEAL_WRITE as well for which the precise same logic can reasonably be applied, however so far this code will simply not be run as the mapping_map_writable() call occurs before shmem_mmap() or hugetlbfs_file_mmap() and thus would error out in the case of a read-only shared mapping before the logic could be applied. This therefore has no impact until the following patch which changes the order in which the *_mmap() functions are called. Signed-off-by: Lorenzo Stoakes --- fs/hugetlbfs/inode.c | 2 +- include/linux/mm.h | 13 +++++++------ mm/shmem.c | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 702d79639c0d..8ab8840707ac 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -135,7 +135,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) vm_flags_set(vma, VM_HUGETLB | VM_DONTEXPAND); vma->vm_ops = &hugetlb_vm_ops; - ret = seal_check_future_write(info->seals, vma); + ret = seal_check_write(info->seals, vma); if (ret) return ret; diff --git a/include/linux/mm.h b/include/linux/mm.h index 8e64041b1703..ddf1b35b9dbb 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3775,16 +3775,17 @@ static inline void mem_dump_obj(void *object) {} #endif /** - * seal_check_future_write - Check for F_SEAL_FUTURE_WRITE flag and handle it + * seal_check_write - Check for F_SEAL_WRITE or F_SEAL_FUTURE_WRITE flag and + * handle it. * @seals: the seals to check * @vma: the vma to operate on * - * Check whether F_SEAL_FUTURE_WRITE is set; if so, do proper check/handling on - * the vma flags. Return 0 if check pass, or <0 for errors. + * Check whether F_SEAL_WRITE or F_SEAL_FUTURE_WRITE are set; if so, do proper + * check/handling on the vma flags. Return 0 if check pass, or <0 for errors. */ -static inline int seal_check_future_write(int seals, struct vm_area_struct *vma) +static inline int seal_check_write(int seals, struct vm_area_struct *vma) { - if (seals & F_SEAL_FUTURE_WRITE) { + if (seals & (F_SEAL_WRITE | F_SEAL_FUTURE_WRITE)) { /* * New PROT_WRITE and MAP_SHARED mmaps are not allowed when * "future write" seal active. @@ -3793,7 +3794,7 @@ static inline int seal_check_future_write(int seals, struct vm_area_struct *vma) return -EPERM; /* - * Since an F_SEAL_FUTURE_WRITE sealed memfd can be mapped as + * Since an F_SEAL_[FUTURE_]WRITE sealed memfd can be mapped as * MAP_SHARED and read-only, take care to not allow mprotect to * revert protections on such mappings. Do this only for shared * mappings. For private mappings, don't need to mask diff --git a/mm/shmem.c b/mm/shmem.c index 9218c955f482..863f2ff9fab8 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2313,7 +2313,7 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma) struct shmem_inode_info *info = SHMEM_I(inode); int ret; - ret = seal_check_future_write(info->seals, vma); + ret = seal_check_write(info->seals, vma); if (ret) return ret; -- 2.40.0