From patchwork Fri Jan 31 18:28:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13955657 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 D149AC0218F for ; Fri, 31 Jan 2025 18:30:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6AC0B280003; Fri, 31 Jan 2025 13:30:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6350D280001; Fri, 31 Jan 2025 13:30:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 43A5C280003; Fri, 31 Jan 2025 13:30:26 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1CBAA280001 for ; Fri, 31 Jan 2025 13:30:26 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 148AA1C8401 for ; Fri, 31 Jan 2025 18:30:25 +0000 (UTC) X-FDA: 83068587210.30.D7C616E Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf12.hostedemail.com (Postfix) with ESMTP id A957740006 for ; Fri, 31 Jan 2025 18:30:21 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=KMXZlXZK; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=tR39KZo6; spf=pass (imf12.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738348221; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vIk21mj59ZgaBOgOzltnjU6J7QwYZm9Z6mtoj9ezbAQ=; b=eT8Hx37d5Z/x2os5w/Uz8d82YnscKANSGX2yu2tVqJWW53qMpyTBNPYjU2gBLxFDtmDue1 M1hIVG83LKw8V8SU08k4PEhXJfcZql7VCDlCR8FD82tFr0HEX5K4U0wGy/yaX8RpuxN1AU g5Ev/eCa7ARuCOFYW6OgtyDxV++ZYR8= ARC-Authentication-Results: i=2; imf12.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=KMXZlXZK; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=tR39KZo6; spf=pass (imf12.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1738348221; a=rsa-sha256; cv=pass; b=kYsoGvapK8R7Yrw2vkncWGPeo4J1oZ3XnzDOhxl3Rb4VhMiH7ZvQeWHJ4JmEDHAJjX1fyJ pN7ZBbX6Eb5qAGMg4AamjJal+iDr1mBO7+AWVroVOZfROS/LmiyfTQA9+Hxhpsof/YZdTA jg/dp+2tgW813fGtpnKHjaQVn/YNnjk= Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 50VHtm8c024798; Fri, 31 Jan 2025 18:30:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=vIk21mj59ZgaBOgOzltnjU6J7QwYZm9Z6mtoj9ezbAQ=; b= KMXZlXZK9VjufQKLZLHUElVYcbJxIDavRQZrXgk2AFyOoVXJ4UIDIF0HpVS8SFZr XyiJPFqO169REGrQaDBJO5n7VvzKHErXkJq7I9Gpz3FF+B3NCtRZrF8Y6yJT4p9h +RqKy96VQ3rjue0HImxNqwCt0aPTNJZ193RN45PzTVhTAJxQjOr2Mczp70st6li/ YfjBTXuUNu2OJ9vWWDgqoQzIiE4ljPC0dQM0E+pno72QKfEgS6p2Pia5CDQ0CLJu WHXb6NMkLZ/V3XgtGagMyMnYQgC+S96q2Ha5bNr4nLeiYQKwhzuXK/TFAekuumEs kVg6P4uIC+iB/qX4UwVOXg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 44h1yj89fx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 31 Jan 2025 18:30:05 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 50VIFCtZ016091; Fri, 31 Jan 2025 18:30:05 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 44ggvkmvj4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 31 Jan 2025 18:30:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=srXwS/70AdMYZONhu9+tcwc/fB5lr5jaoas9ckg6zYucDWHMTeF6GQx6fL224n2wadjLItZi9MjqMFlPa/EJQmJbPG7WNZHvQ992ivgHparchORBuc/preT77aTsSCSZyZ9Nb9t2gxOsoHjSOfMyzdJax+6+FylUdnEnVNc8+q7Tcea3xkxuS4Yvp0wJklmhmpgtsjKSKecsg95yl/mJy0EaXKB3rP9MKNVjIDFpcVB9aotUxS03p5hQraxv+QCfxxgTZb2/3IqrQfaVmEwJqzmKejfSaS9golrAgia/gFVY5+zIc9yiEcOhTuDB9TRRnAt/7ScLCfgg8+qVlQo2Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vIk21mj59ZgaBOgOzltnjU6J7QwYZm9Z6mtoj9ezbAQ=; b=HXZtldWyNa8+TU3ZxWsqfJPqPKcjhch9OCQn56t/j3Ti/kJ53EVEsCkdc3jN6SRUenm71uViEiXmv0fQCKtiVflRzhLooxrZTKyWy0cRHRVHAXJu2nakMLdDJ6xelCwX4lXwGT31KwdnH5FBn+9tcztVeLb06VJN6UQ1q/G0O4dqSKnjfyMh69YW+KKHWewyJU+2WP/fao2hSrze59WKzasCQSwzFQ5xEBjT+4tkzSpMvBDOL+7+8u7eZXEyHtMz7o5jcnQFyc7a/H2LiesAPmtWDPjvBWrtJVUT3zfLAytlr01SLp2WJZNtLdpgZ2F1+dh+voa6Pr9cZFMnDPP7oQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vIk21mj59ZgaBOgOzltnjU6J7QwYZm9Z6mtoj9ezbAQ=; b=tR39KZo66nVVUTwhVhluJOehDRDVvlirv76rzYBJmJf6iAhOPx/n9ibt6Xeq1lFOcQhezDn9r6FD65FPQJ8cnEFgxUCsq51kytR9BOKZJ0js3PezdQZnogeb39UcEKGKSgEY/pvZ9YbnVypypmxehJ9jZ69+cK6/3FVJm69FzCk= Received: from BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) by PH0PR10MB4407.namprd10.prod.outlook.com (2603:10b6:510:31::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.20; Fri, 31 Jan 2025 18:30:02 +0000 Received: from BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9]) by BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9%6]) with mapi id 15.20.8398.020; Fri, 31 Jan 2025 18:30:02 +0000 From: Lorenzo Stoakes To: Andrew Morton Cc: Jaya Kumar , Simona Vetter , Helge Deller , linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Matthew Wilcox , David Hildenbrand , Kajtar Zsolt , Maira Canal Subject: [PATCH 2/3] mm: provide mapping_wrprotect_page() function Date: Fri, 31 Jan 2025 18:28:57 +0000 Message-ID: X-Mailer: git-send-email 2.48.1 In-Reply-To: References: X-ClientProxiedBy: LO4P265CA0169.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:312::6) To BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB3366:EE_|PH0PR10MB4407:EE_ X-MS-Office365-Filtering-Correlation-Id: 081c31c3-9ef9-447f-6f18-08dd42254661 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: UTNaV3rxV5bwYgGpkjLnLV6xr8KH0+DXX8UnygGzRZWzoMz2brh64jvA73RSaeJe3OkDLHiKphG0RHAE3CtrDtnLxbkYlh29gCj++GRaVnDYPGrmBtO4by14UtbtyKQw2pYwhE8agbt9Ue1bsnXSzuAckaGmxlUJ7QXnG+XapaGY/kzWmhAbyVELD7lQOAPVn3JoRKNWY9kS2KMTKk+d+y7JzQWPXMScexZQZw+XllvLHGuez5NhiBXY5XQ3UFOxa2jOQNB3ebR/HyLl73eVQHZFPJea8PQJWTgkL77fBsKzNhLjcGYerxN5uis15+maEWnI4x/coyfBDnf+VTtFZrsqqXv0cVEYWVketRglYAKmy9e04mgTDS6OzxzTULc20LkoMjj1P/CTj4ei2ErMutfxZ1dVpdx/J63nhWIC39yuFg/8mCxrPPO4r1GJCwL4NQ5AR/MbWnlYTmftfQvqnJsSzU9uXker+PzPy2IGQwUradIUSwIqYWCrs5aO7goMl92mfGwRzJWxTW9qZlHOCDQZAOTipCZodbnaotiyzm1NjmpEnwmFIYu/vVnPlvGGWBxnB14C67tYFgoLW8/YknBDrdd8JgYrEEOUjPefnQYmukJHjeev7QPi9N8HwzjhsS6Y/sq3OBFSSQWvv8xOFJ1yIdbKZyt69jTYOePK8uZnooFvYAFc6k7qb6kTinkvlEzAWINu67PQ45Rv2EEW6+Qrq8dqi2MjsEsj7QVaU6a91HYNq8aRn4n4ZoS5REA98bRN8rPRcPhx3t5wE8wmg7sXXOJqio/21RAWpn4t26t269QPkPGFmTdGQ9bqBBfZQI0YXD1h40Yik3Tc6YXQg+1aPS+tr9iWV8gz0KCpal2/k2l49ernOmXkmgqE5NLg/IGuqC/RSJvbRqqFAfIrH8VPFgYl/8TW91SZFNHERhzmuZ2++SlQrjyRaj2AR2gihXFc4xBC7AzW8OE+NR7XI+z+IxTh0b6k6Nbhif/TXY4FZbSgf2PGcfrJPaJkdZZBIjatISe1Pm1K2DpswHN8qNnALNK9Lrj81fDROd2UJ8m5sJXir6rBhNFjwrZZ1tDXGay1/rUM1GchnappefL3EhAaJ1ufbzwNrxFrkmX3/AmRDBoo0vjGgfI1foHk/LpC91YfD+25m1+t0syCCoi9FpxPdvJ9rkLCImCsCPht68sQeCu8baBZiy6AI5wpy16E5EohVwF0kRcZIYE7btqxDEBbj9QkD3lMt3ZUSSF4xGLEQMmRjaklC6lMUmMPYBaUgSoJSoBlxKT2J/vVDfe1/En8ituqLfE+N6yJjXV1wxvt/BaTveVsP0+Co9c2PaYXP6zd6KH6nlSjlMGKrQjWrNJ7X6em0AWr5ELpEsac69xpHdN65JAada34s43zrU1k X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB3366.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gVsJKjh7Oy6wJ+8VJpbBBJcV6dQ/x+c8oZoLyAoBc0NHI7MmWwucj8DvnvmJmfeY/pmlI5c4W7SIgElPFOWths5cX+j/uQOUL/1K1MrNsvmgRJPf55nXR9Ro5hxfMhAm9FiIetYaMAmAwgMlyywKNZVz826O6uLtUgRxeQZ3pQBmuYAx3Txt9yo2s7F8ErztKK9h+JM3zAnIpSZKqhvSWritnX190w4uYA1xEtsKMIL1zrSJbA9UZBgQ8WiNsSSR3oObRy8WVgf7rIcqJPxXU9ZsxE9udVoDNorwYZnsI3y5gfgExfPujEeO+bwN0PgnpDQwWR1I2p5eM9DuIG6aDSPD/yXKruoPuIs3Nsr8TbBVL8vHjyuOojoILX1XZW/0zT79a05VFp/GX8Fb7jKMngugvjMGD/HvLOcOcbYVq7fBoO84pKIZXVqQiJl1SVrqBbiQ7zGWeOg445K7QEg3OjBewrYW7ni5XB2i8TvryHPqQF1YzIkAMgIrUfpkN9DtvfCdIVwD+c89Q/9gz29g9a824HPkE1f5XlO0rlDjA/WO0F4h20c78kFCehqTC+1+WQ50166JYBoSOrQXYpM6YX34cUHrLireJtLIK8iMCGio9fSs+WKZ9KEheG8FIMv6AZshHs9UmGwc9qiFeSpWHZnX5zAeK95HlYfC1xDlPESgTwKLYCDXbDAC1vsGAFUS1a6sr4jKn1norB9pLGl3xPOBPYCPTXuGCQEOFeBftph22H0v1Rr91QZNNyfdvjQeJvC42ocBXTb3Ig8pnxiH0/1t9+UtdtBxilhbqD5PSiPohPSi4mkX4M3636YGDjpDOLFf74H46+TWxrhpzdRrRabzZLwjSVJDjeJDjyWUZQ2BrVtQTMSRQCVv5CFCRQstCR2AAGNimQ66n2cGTlxiDcBR3OWAabo7IRmjwNjy9C/hS2r4sJ8wYU5C9t4/oqgnuD2bw8FogkHOMthTwMt284Li96mOCR+pM/dYNxaYIPZtfrVODjSMwGOGFKKqzEDLm3Jf5NEColiTpFj+h1RtPP9+F0dvQh9ULaVkvx8TYdGeE0hB7vtI5N8l4p5X6nNQgO3mU4d8rKcVzvH/wXGzrP2gotoYrKCKieCVyaa2bVviewzekNj5R2f+qlzNqiU907KimOWh2KgbqQBRBARhfh2+QUGeuc1veSNYbuslXDlQnXuUr5oTYxn31PRTZiV8hDW35jbudEadRsHRqVb25BGXeheXfM6tBqyWV/rzx7xqsDwlxmh3qP0P6SuUQrHFnKZV6TwDOUXKYX1cpjINiGFuh9APSR7VoxgudJa3tNgXN2ZX4vsGlpRVCDG2Hfr7hvE4y5aNUrHpJdwJ3uI9TMEJXITcJrlyblt0FBg2nozAuFFoI6Xn+QlL/U3sPdCy/nhEnl36Eb4cwDa5yMfvjLbN5K7hSuL0q1eW6y1HNxFMez2fclDiTK9gPoDq1efh8Oc2pp0Aj83+XWeqtUNmV1fVd/v/oinwLQqqIMpnl/LiPC4sUeYCxhTR1YhsqHxoM3hCydqA6IlH2HUmFq3x0xehHxSOY/Ne2G+v6uxhiJlVsA0KQZmrrFJu+uqx4m6W0em8ahdcr0Od2bIBImnYcg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QGn+iZRZrI6ArBF5UPXDa8s+Ub759aBQYXh9aqt7Ei9JpTYJJGO4+FjbWOMOr8rIVP3HjQ/5NPn7kWp9C5fBGp4d46rZwW5GXidPptZ7C9nZeA/ngjw54Vev2pV5oLbm2rOtgaSPRA8tjuZ5thneyl/7UVEk3jtMmLvVJCOXCHopw946ps+waxvekMAo1O6EDY4uCI+PKfjMds55u5C4dH7T9aaQJnwNUyqpoP/pwuCjnzsoxVp4n1intFJQWunQDxzPCE6k3ayVWm/xIEHGNdSS9cHRMyh3YK6S45mTIYRRdUd/Ol+ezCx90jPtLfl7ZodGZ8e2zB5918EQn1Ysi7HdmPf9rHQocwNO0O9G5/mbby7wuIJNwP7WEk3cqfQGfEdrB1eU7IsJo351bUn2Pde8535rHyTUh+mW7LXSFrpLH67R0lpAuc6MlkbEahgE88h8//R8x5RTssNNiHF6qhu0/VxPt04a62Vd2e2ZvsjuCRv7fw8AjB23pt+3HYN4WstaHv/QWIf7AlCojoYYoTaaXvD4Q8g9eggupIZbPfGca535fXEBVE3ixX7qpj5VDbxVoSFHfPOz+x5jxVOIOe+VTNaCwAhSlIngSD2THvc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 081c31c3-9ef9-447f-6f18-08dd42254661 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB3366.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2025 18:30:01.9229 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KXnQZExOSlFc/F06n1yBcR3b2dr8BWWXxhq4AUiAb3tKWotf0vx7zp+Q/X2lHdZK6h3qlQZ4gOC7ynpdQoiEncXkseqkJhxhoXe7BhUesEo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4407 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-01-31_06,2025-01-31_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 spamscore=0 suspectscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2501170000 definitions=main-2501310139 X-Proofpoint-ORIG-GUID: mlFgOAIe2mdbnrIRYmRGJ6GLxpsXvmD4 X-Proofpoint-GUID: mlFgOAIe2mdbnrIRYmRGJ6GLxpsXvmD4 X-Rspamd-Queue-Id: A957740006 X-Stat-Signature: mqnxmyiu43k6i65i6nxph6xotdhp5ogk X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1738348221-730411 X-HE-Meta: U2FsdGVkX18cwMkaRDZlhJCSpjv/CjcsdLDU8beZIEc78himU7mD85aDp91P+AqzihblAedvt23C+Ho9KQlOmO29ZAyWX7lL1JT35HZ8fdw7TEHc9vOhhIIrZkF+natQAB8rZVOQLwKjSDmsLqPeoS6LRXKrLUupijKBAditPXjF6mcoA89AeQn4oBBVliemBnn1zDvXVK2mZEf6JCChmXrN2Eh9nyPXhQ9yusvkT+eM23E3z79/ll74FTdoicuOiUhbNFrW4XYtP60ogFhXOZRGKkEscTh2LG3tLNHP79b2519g3d+CRloagsbzzCmRYv+c8q6DgM16kSd+rb9rNl51myJ03Sv4QY7za6FrQDrKVdmO3NyFDo8PwOMb9ZFueOVHb2fdaUDGpRa4hR8nGuv3mLjXKN2jBPPVgg0SDxNXNS/Ejc9CZk+UTFx85oxgIaQqEY//1hm1Gyj1IISmAiXlYMP7KYfSjXM/TXVXIfcohI2fWMecmleJXakQ9Hg+tn1O8gRI/4C3bpae8tNREqwIn6BFWUCdmQo4BPQOoaMadcpiP7AgdSf9dkE6uFQ4evrFz/CrRKY9ft6zhRqwwK1CbQ5Kmrw//UZA7F1qTKeyb4aMYsL8fhSX8t2N26udhAQqcQNTY1wNEcICoCDAByCJ+IPAEjzuRVhY26CRDGTi6teyJ1lFOQFcT5SRTyeSnOc00hyXzHpejJqtVDE/dv0emtN/HLDXEjCBnEfvoLxz4w5wQRaVS9oDctV5phm58Gm0ARNRgjrX5xBBSTNAih3LdyWhUs2BUiDzRDt9D0HqdDOvuYSCnWxNnpA6a3KJmU/Keg0irmV3MztcG6a4pnW12JjEobIQB1vv7RbpmN9JHAWCs/x7JOEIkXRUDEFZvQuKM22GV5yyYqLdcLzvxc5m2lK/dIIZqAGq3Qitx7ZpPj76IOe8LSa7VGsqhcTGMXOCiAYoOdodSkpvoyh Gdrry51o haAFmf10TA+hOzBlR5R65DF7jk+jLS8ERPcL4+4UYUA2Z34f1QnUVuDJHrQ93F4ndSZq4aKGaIWu6HDc8L6sqyy4xB7kBt3bsetwFrYaEuAX3YI5nuqB2NSH17vqoyzWbxxPXMfiGAupUqaCsv/3L4pFo0cJ5OkweJHATn+COYwEBH5qLWsBvQnxTxmdxkc05QGifZ405N3avLyky2s9g10TbxSOleHU9y2hsVq8jkD1EftOpFo4OscXIsm/LUlEjLz+gTOwWcB3IeWJxhxG4Ag4cXm2aI7wFH9N8jOiRuRk/+VOhQ2KrqZzEz87kV4uYr+qUkzAZcu65tFuuLRvBkFvFLag4fs5uty2TMOJL042n3jWps6sxzl1g/1QUmfdps0dpc4jfGhrUXoUMcIHTqSQmp/AwXC2fnVZHn5dSUZ7mb2oUIAoL984/XZBWjMX+bbaeP+LELI6XrgMiflw3aeV35/ukFWC4nZwUCIRIY9SvEVph/POrXCr5ygiPUSSQ/hgeGSukcP/TB2h8nCrujq7PCoBTTbp+Qzl0ydRIYSiSFhgcQIO5xDTLa33QOKXejl0cKIoVa3nWIt5/TjIBSKlHIIXUrVZJ9/nLanjEU9jZRdBcPTfx/eqSVs2DbyFRUVSafYPUxnJ7Y5+pvC6M0m8Y55o+QMXLHBFtGSHbiHTIkwdvRz+8MWCdJQ== 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: List-Subscribe: List-Unsubscribe: in the fb_defio video driver, page dirty state is used to determine when frame buffer pages have been changed, allowing for batched, deferred I/O to be performed for efficiency. This implementation had only one means of doing so effectively - the use of the folio_mkclean() function. However, this use of the function is inappropriate, as the fb_defio implementation allocates kernel memory to back the framebuffer, and then is forced to specified page->index, mapping fields in order to permit the folio_mkclean() rmap traversal to proceed correctly. It is not correct to specify these fields on kernel-allocated memory, and moreover since these are not folios, page->index, mapping are deprecated fields, soon to be removed. We therefore need to provide a means by which we can correctly traverse the reverse mapping and write-protect mappings for a page backing an address_space page cache object at a given offset. This patch provides this - mapping_wrprotect_page() allows for this operation to be performed for a specified address_space, offset and page, without requiring a folio nor, of course, an inappropriate use of page->index, mapping. With this provided, we can subequently adjust the fb_defio implementation to make use of this function and avoid incorrect invocation of folio_mkclean() and more importantly, incorrect manipulation of page->index, mapping fields. Signed-off-by: Lorenzo Stoakes --- include/linux/rmap.h | 3 ++ mm/rmap.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 683a04088f3f..0bf5f64884df 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -739,6 +739,9 @@ unsigned long page_address_in_vma(const struct folio *folio, */ int folio_mkclean(struct folio *); +int mapping_wrprotect_page(struct address_space *mapping, pgoff_t pgoff, + unsigned long nr_pages, struct page *page); + int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff, struct vm_area_struct *vma); diff --git a/mm/rmap.c b/mm/rmap.c index a2ff20c2eccd..bb5a42d95c48 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1127,6 +1127,79 @@ int folio_mkclean(struct folio *folio) } EXPORT_SYMBOL_GPL(folio_mkclean); +struct wrprotect_file_state { + int cleaned; + pgoff_t pgoff; + unsigned long pfn; + unsigned long nr_pages; +}; + +static bool mapping_wrprotect_page_one(struct folio *folio, + struct vm_area_struct *vma, unsigned long address, void *arg) +{ + struct wrprotect_file_state *state = (struct wrprotect_file_state *)arg; + struct page_vma_mapped_walk pvmw = { + .pfn = state->pfn, + .nr_pages = state->nr_pages, + .pgoff = state->pgoff, + .vma = vma, + .address = address, + .flags = PVMW_SYNC, + }; + + state->cleaned += page_vma_mkclean_one(&pvmw); + + return true; +} + +static void __rmap_walk_file(struct folio *folio, struct address_space *mapping, + pgoff_t pgoff_start, unsigned long nr_pages, + struct rmap_walk_control *rwc, bool locked); + +/** + * mapping_wrprotect_page() - Write protect all mappings of this page. + * + * @mapping: The mapping whose reverse mapping should be traversed. + * @pgoff: The page offset at which @page is mapped within @mapping. + * @nr_pages: The number of physically contiguous base pages spanned. + * @page: The page mapped in @mapping at @pgoff. + * + * Traverses the reverse mapping, finding all VMAs which contain a shared + * mapping of the single @page in @mapping at offset @pgoff and write-protecting + * the mappings. + * + * The page does not have to be a folio, but rather can be a kernel allocation + * that is mapped into userland. We therefore do not require that the page maps + * to a folio with a valid mapping or index field, rather these are specified in + * @mapping and @pgoff. + * + * Return: the number of write-protected PTEs, or an error. + */ +int mapping_wrprotect_page(struct address_space *mapping, pgoff_t pgoff, + unsigned long nr_pages, struct page *page) +{ + struct wrprotect_file_state state = { + .cleaned = 0, + .pgoff = pgoff, + .pfn = page_to_pfn(page), + .nr_pages = nr_pages, + }; + struct rmap_walk_control rwc = { + .arg = (void *)&state, + .rmap_one = mapping_wrprotect_page_one, + .invalid_vma = invalid_mkclean_vma, + }; + + if (!mapping) + return 0; + + __rmap_walk_file(/* folio = */NULL, mapping, pgoff, nr_pages, &rwc, + /* locked = */false); + + return state.cleaned; +} +EXPORT_SYMBOL_GPL(mapping_wrprotect_page); + /** * pfn_mkclean_range - Cleans the PTEs (including PMDs) mapped with range of * [@pfn, @pfn + @nr_pages) at the specific offset (@pgoff)