Received: by 2002:ab2:788f:0:b0:1ee:8f2e:70ae with SMTP id b15csp223100lqi; Wed, 6 Mar 2024 15:24:22 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXu4skT13Fuov7/kU5kBL78qY5Xb7dD3hzj19cz+NRGaomeqMH1hdyqFKJUIAf/sLlUUw6InXdXos+B3G+LuTsaccq68ifG468d0dv1Xw== X-Google-Smtp-Source: AGHT+IHo9thteL84Rsz0eVLPndD+U90SuBT4TUenTGZbcLWa4HCKIO8ZUMajjIrfsgbaXF/ztiTL X-Received: by 2002:a17:907:11c6:b0:a44:1f3:e474 with SMTP id va6-20020a17090711c600b00a4401f3e474mr12222812ejb.23.1709767462554; Wed, 06 Mar 2024 15:24:22 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709767462; cv=pass; d=google.com; s=arc-20160816; b=jun6l7Ljdco8UULrddOg/i/9k/hJDNIY4xdck+1464ZwByrXYdB5rVRFDg1x5OXw9o 9wqjirrly74Aa7ASotYFebKpqKLdT1cvjWWmtHH/Fp6X7aoToyzE+tq6LJCJtnlTva39 tHwhidCT33G1bibCzAQVpth3uCB0/9DN8hxgV0DuavYF2XZxT6DQ6NSLi3n2hS9KeUaz Sl9q9TER0Yw6cRMk6RXMtXYXP0k0qpZZqbui1llnC+nqQdw26z8tOpwm0QbL3cbHTVt0 6mdaIfK9xPPwIM+kcia3aShJbXW0gI6KB3ORtjklFJBJ9M4d4420h1zOkreZW7JPWjM2 Nu5Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=YNacY+IM86DAtF9+inDf718X7FnVq7qjmzjIlLyPiUg=; fh=gfX51g8QIBXIgnB8/pVgIfKR6OyOYW3/Z/UKPWIaWMY=; b=V/I261lXQwEeZyO2pNesueR/ZPt1qN5tHhr9DLqL5qD8b8RM5lAMsVWEit7UCWTzp4 F+XKA5UZRrGarhKbgrxTVPTSL2InCioCsiGmIPqjv86rkL2VKT0Pc4jownD+WEuNuJuZ MDvJtJwek+dS0hl1Pu3oMRlDJFeXBLw3uIG7xnGl2ty9ZM3n5H/4nQmdLlsyygV4Vlnb 46EEnAve902vJxWJOZgDQbTkVyPslNCui11eVptxjOJWdrCrdczy4Ke7bAPm8rB+FmZv yXlBpGrhzjRfCw+jWKhe9IhlDk02pAP+gFJRGD/PTXhDO53Fq8RcMYEAjJItIdgDhL3o 82gw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-94709-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94709-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id au13-20020a170907092d00b00a44b8d5e107si4840552ejc.927.2024.03.06.15.24.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Mar 2024 15:24:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-94709-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-94709-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94709-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 4CF221F21633 for ; Wed, 6 Mar 2024 23:24:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 11A491CA9F; Wed, 6 Mar 2024 23:24:11 +0000 (UTC) Received: from lithops.sigma-star.at (lithops.sigma-star.at [195.201.40.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07B381C6B9; Wed, 6 Mar 2024 23:24:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.201.40.130 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709767450; cv=none; b=XYEeDpsOIHdkPE0I8WL7toXygOqjyTTpUFq2TBuCS4d81lo1XJU9fwdcZ2SiLfWeuz9s6oYHe9CUnSPIzsvuqFN5XrKUHjMBceE4LXjJNlMTufXYDcSunKjbcr2PT510LfJF+KYO/TOnV8sHl2JKpFe/ilcdaRA9u4GOs+IYqYs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709767450; c=relaxed/simple; bh=X0M5iZYTK6pOspHFAkHz2qSRPYjwL7LKAHtHCJ9EVhI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=SjJ4MBo8dAsTjNB42JgdNF+ZMPg4lztRCtoliH1p+K1Pn41KY7y+K/PYo9nN8v3LS+/bZ+lEBTxUg1jrHUcOCO3IMXDDK0nkNCsJaHjvLWj+2N1VNR6mBKuPUHWWNp9fJXKOf6yE/Csw5JVnlzGZZ9SHs2SQtgFg6eilH14CUTk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=nod.at; spf=fail smtp.mailfrom=nod.at; arc=none smtp.client-ip=195.201.40.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=nod.at Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nod.at Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id E696C644CE7C; Thu, 7 Mar 2024 00:23:59 +0100 (CET) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id t9XzC3CxY69m; Thu, 7 Mar 2024 00:23:59 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by lithops.sigma-star.at (Postfix) with ESMTP id 5DD51644CE7D; Thu, 7 Mar 2024 00:23:59 +0100 (CET) Received: from lithops.sigma-star.at ([127.0.0.1]) by localhost (lithops.sigma-star.at [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id FnKr8zZbO6FE; Thu, 7 Mar 2024 00:23:59 +0100 (CET) Received: from foxxylove.corp.sigma-star.at (unknown [82.150.214.1]) by lithops.sigma-star.at (Postfix) with ESMTPSA id C92FE644CE7B; Thu, 7 Mar 2024 00:23:58 +0100 (CET) From: Richard Weinberger To: linux-mm@kvack.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, upstream+pagemap@sigma-star.at, adobriyan@gmail.com, wangkefeng.wang@huawei.com, ryan.roberts@arm.com, hughd@google.com, peterx@redhat.com, david@redhat.com, avagin@google.com, lstoakes@gmail.com, vbabka@suse.cz, akpm@linux-foundation.org, usama.anjum@collabora.com, corbet@lwn.net, Richard Weinberger Subject: [PATCH 1/2] [RFC] proc: pagemap: Expose whether a PTE is writable Date: Thu, 7 Mar 2024 00:23:38 +0100 Message-Id: <20240306232339.29659-1-richard@nod.at> X-Mailer: git-send-email 2.35.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Is a PTE present and writable, bit 58 will be set. This allows detecting CoW memory mappings and other mappings where a write access will cause a page fault. Signed-off-by: Richard Weinberger --- fs/proc/task_mmu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 3f78ebbb795f..7c7e0e954c02 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1341,6 +1341,7 @@ struct pagemapread { #define PM_SOFT_DIRTY BIT_ULL(55) #define PM_MMAP_EXCLUSIVE BIT_ULL(56) #define PM_UFFD_WP BIT_ULL(57) +#define PM_WRITE BIT_ULL(58) #define PM_FILE BIT_ULL(61) #define PM_SWAP BIT_ULL(62) #define PM_PRESENT BIT_ULL(63) @@ -1417,6 +1418,8 @@ static pagemap_entry_t pte_to_pagemap_entry(struct = pagemapread *pm, flags |=3D PM_SOFT_DIRTY; if (pte_uffd_wp(pte)) flags |=3D PM_UFFD_WP; + if (pte_write(pte)) + flags |=3D PM_WRITE; } else if (is_swap_pte(pte)) { swp_entry_t entry; if (pte_swp_soft_dirty(pte)) @@ -1483,6 +1486,8 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned = long addr, unsigned long end, flags |=3D PM_SOFT_DIRTY; if (pmd_uffd_wp(pmd)) flags |=3D PM_UFFD_WP; + if (pmd_write(pmd)) + flags |=3D PM_WRITE; if (pm->show_pfn) frame =3D pmd_pfn(pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT); @@ -1586,6 +1591,9 @@ static int pagemap_hugetlb_range(pte_t *ptep, unsig= ned long hmask, if (huge_pte_uffd_wp(pte)) flags |=3D PM_UFFD_WP; =20 + if (pte_write(pte)) + flags |=3D PM_WRITE; + flags |=3D PM_PRESENT; if (pm->show_pfn) frame =3D pte_pfn(pte) + --=20 2.35.3