From patchwork Tue Jan 17 02:34:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liam R. Howlett" X-Patchwork-Id: 13104102 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 54771C54EBE for ; Tue, 17 Jan 2023 02:35:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 446DA6B00AB; Mon, 16 Jan 2023 21:35:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 383006B00AE; Mon, 16 Jan 2023 21:35:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0976D6B00AD; Mon, 16 Jan 2023 21:35:11 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id E25ED6B00AA for ; Mon, 16 Jan 2023 21:35:10 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C61F3A0AB4 for ; Tue, 17 Jan 2023 02:35:10 +0000 (UTC) X-FDA: 80362723980.12.1C6B68D Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf01.hostedemail.com (Postfix) with ESMTP id 555474000E for ; Tue, 17 Jan 2023 02:35:07 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=cTPUXlkW; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=W+bhmWSR; spf=pass (imf01.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673922907; 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=CVkOl8Q/nodkaO6l1rJs0OnFVAPjOYnF9i1CIp+QF50=; b=1DwgqvnMjTvy11Mvy8w0NH2opokrWBP3qTimfeOeLyvJdUR4cmgHhRF0oykR3vECFQ0IQg NalcnCise9mfQ7/K6XLTSnAwQK7EBHM6UoWUTW8Ft5EiYNEkW0BuQSi/7WaOfaCzjj1LFA iyNZbvyIUB3RYIkiiCiyPHb/CbJEoo0= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=cTPUXlkW; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=W+bhmWSR; spf=pass (imf01.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=none) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1673922907; a=rsa-sha256; cv=pass; b=f79y6EDtXseqUvUSywvlf9vXSG8Abza7NPhqZKE5I9KdWq7OpVONVc2EJ7+5mrbIhgWMHy zd1WH9ntFRiFA5uduvuLJ1HJxMxPdV3ZiyXSBUpEJJq1ZmPolQkRluBRBRwewvnJMTD/nV SrVB0kDAKMh6jNkLt6nxd4qoT2zoQpU= Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30H09ZsD005646; Tue, 17 Jan 2023 02:35:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=CVkOl8Q/nodkaO6l1rJs0OnFVAPjOYnF9i1CIp+QF50=; b=cTPUXlkWuKm2f3bdNeNmVCRHMfYMUb+NFe5uiGsfPGMPZwyXWeYQft+HxMZFYNG8IpSn qUXfo3gmZkZLK9F4nLRKrvah/QLIXZNnX+TpxrhA4p6iyuZg+wDmCSoMeUnAccT1ELV+ pWl6lcb7OrM6ZlLtHZ94kQa9aQj0oezRZ1jbGNob6x0HO1VMWDfILpIqNvY353XpU3DZ kHr+JBb4/0XFXEmcDzc6hqiV2MTnD0dShdktsCOMXjbdVbWOe1E1mMRcZmU5q2SLsksD OV+QiVEOXI0LhPlH0VjYL+qbfV0JaQzQQGWjaAxnmfUKXwYZqOQBrcr/W3bZJRDMIQVk rQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n40mdb5ex-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Jan 2023 02:35:05 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 30GMXP43028373; Tue, 17 Jan 2023 02:35:03 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2173.outbound.protection.outlook.com [104.47.59.173]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3n4s2rfy4x-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Jan 2023 02:35:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l5qIOZ2+nIIGDIyHpfbTQnzEmeSbzdpeAlCFizd78RyE8w4/7h9n6xFNHTUJplWSilKhVspRNyeswJmd5u74l52QH/TxTYJ7YSEqJVV3q436G7zGoXq+rinvyYZppQ/3JZn4dRbqPW9m35j5jvb7PY7Z7oK8OcGKwbfcTW73ZaFztrNWFXtm4QCdbf+lJffIFAUzOgoXSERO5lxkY+fZW7h82WDSl2xIyqAGwTae8EAFimAF5B0HbpDDRmnM07i0umLJQJe/0vkvBaec0NEqcS0zj9P8HVDfFy7NDApnPXC8tMeaV2QvL99R/b4fVKbnrNfpoSztLMlGNNIVE3VBRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=CVkOl8Q/nodkaO6l1rJs0OnFVAPjOYnF9i1CIp+QF50=; b=j+WhLC6Iy9nSV4r0IBInf37gSxjM0MFbf0qnzRoxG8NEuCPiI//d2lnUt3BtGyNYiCiPdTtuJ8WP+T5gKmqXpwvFs6WpqXTtaQuxxJEzrkNcErvNe2Z9wBmPzDxCW/ocq+zp+b7KfPBjT2XsILpL9840TaTdpRdTOZZrJsEPK7VN9CCDwa1YIZW3umLLV8yJxiNJBvi9gvS2mp50Oqu4HAuRlqXCw5rBEPo0oxqYOyewYSodLCeD/kOJd+9+sCZeMU+7QkkegBG02x5oHDePf6+EtCqrAdbF/Fwt4lAPZryzs5ARfdbSEaTVM/3REcmgkKBbyFsj8Rmw27jJ7rljvA== 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=CVkOl8Q/nodkaO6l1rJs0OnFVAPjOYnF9i1CIp+QF50=; b=W+bhmWSR1L1H6zF1sDXQn1wWfcDY6jOhDV8bYKf2T7IpLTHkfN98HgV2ZKbZz81dOc33OwUAZQ/S3MpOxo3qN/eswXuHkBO9ZRsdmHbhh2fIcXhLFil3PI/nMfMwQbhVQGVn5KyD1jV7FPaENXkfq+YXlWOciIRG5gFdCd7kzeE= Received: from SN6PR10MB3022.namprd10.prod.outlook.com (2603:10b6:805:d8::25) by SJ0PR10MB4814.namprd10.prod.outlook.com (2603:10b6:a03:2d5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.12; Tue, 17 Jan 2023 02:35:01 +0000 Received: from SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682]) by SN6PR10MB3022.namprd10.prod.outlook.com ([fe80::a02:2ac8:ee3e:682%4]) with mapi id 15.20.6002.012; Tue, 17 Jan 2023 02:35:01 +0000 From: Liam Howlett To: "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton , "maple-tree@lists.infradead.org" CC: Liam Howlett , Liam Howlett Subject: [PATCH v3 42/48] mm/mmap: Introduce init_vma_prep() and init_multi_vma_prep() Thread-Topic: [PATCH v3 42/48] mm/mmap: Introduce init_vma_prep() and init_multi_vma_prep() Thread-Index: AQHZKhw1R6A3SxKRmkKlNz+y36H+LQ== Date: Tue, 17 Jan 2023 02:34:22 +0000 Message-ID: <20230117023335.1690727-43-Liam.Howlett@oracle.com> References: <20230117023335.1690727-1-Liam.Howlett@oracle.com> In-Reply-To: <20230117023335.1690727-1-Liam.Howlett@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.35.1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR10MB3022:EE_|SJ0PR10MB4814:EE_ x-ms-office365-filtering-correlation-id: 6e40154d-6fe0-4e3f-4509-08daf8336eae x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 9gURo+VjHoQdYiQXh2ZDJ1Kv8CyTxLBVzUXe9PIHlofyNa+mONm9x99cRsI+2/UDSpbVPI9ZJzurS8H507+k5otaTNX+uVIhptiLlv5Y9AxU+lMf+zZ4aSBIoemR7RsuuosERb4iH8twVA6SreSVGVxf7fH63RkXBegRA6e6G7EjEAYtgxeN42pWFrNj8/WYFOx/cgDZ1d7plffrbZK/wszSdDJx5os4AGQQlBiG2SdcIhJlnJUurZ/4EiI3cMkPUwxR1zRNCpxuigWJyrWqCekgj8ahcAhOykiuGRZ0nPtsyrqC1HRKW7FLTnzufb0LXyX0x711jymdgIVt4wARJ+G3VLM0Zs5fuI4UnEVAi3HqBYbMpdtnsQYz67uJbbnmIxcLd6RYP37gBZwVLugPOdRzEJlw3Db+S0X0SBpoD8WPDj8atNUc2QHlqDgrAm8x8mcl82dpiesLRoYvd84bzOVIlJrPRZlwhycz/foOqhJ0AC9X2fneXKWijNBwqXnRIrALIK6HrCrBoCgPRwR25PMQoL6DxArGkx9G7eLE1ijuAEijW43jVhk1YZlw8hNciD5FcvgeEhqzdJBo0l4VJU6EZGG/Err/y3TftumTiqRxwb4166vVvXZtaX6A5ucWRMZ5S2am15/zhVaq6365+IeURfm7sFysL9+ReJHsmg6IQTGrSU42ib7LHbca0kbp7jIm+WMMHUep/W89h4mBuA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR10MB3022.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(39860400002)(396003)(376002)(136003)(366004)(451199015)(6486002)(6512007)(478600001)(186003)(26005)(6666004)(107886003)(71200400001)(6506007)(91956017)(66556008)(66946007)(2616005)(76116006)(66476007)(122000001)(110136005)(316002)(64756008)(8676002)(4326008)(54906003)(66446008)(36756003)(83380400001)(8936002)(41300700001)(1076003)(44832011)(2906002)(38070700005)(38100700002)(5660300002)(86362001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?SX2E+y4GdCBlaK9S/di3YSP?= =?iso-8859-1?q?ape+VUwEFP6G/1d/78ySbU0Csz1ipz8Plq1RAiIINLZjHmRj4lMhl+Vlz5If?= =?iso-8859-1?q?b341E6NJM+YCGbeHhzb9XMB62VmEBITNO6sL1C2jYBjxDIFVo37jRv/93Jg6?= =?iso-8859-1?q?Sd3aHwdEt//3wLYb/jLT4nZs+hrgbRHLqYfLpL4mfk34zLicu+f6kY5piNOV?= =?iso-8859-1?q?CP6G4cZ2xPSxAkvJ+E/ilM7wt74FDCmekmvgzG8hbdk/9k6Oyzebvkq1EK2U?= =?iso-8859-1?q?zKQVGDoiPNpCeUD0LGGA2YJuWaiASme8cNZUK6R5upZ3r/Q+Qmgu06ZENLoC?= =?iso-8859-1?q?tu9IoNPSCeET28qKIn0m30qKFIH0OhKzqV9Yl3zbN015o5sEXFdqiWECK0LE?= =?iso-8859-1?q?cDauZxu1OqmnyCJQ7yPkoE7poPLLN8l+zPd0mcaN+PEJJnyoZfLQ0l2QFJMS?= =?iso-8859-1?q?96/b8tSlsedExlbMrlCImQYYuDl6Dt2lZsSrHtOsDhAj7g7bM2CPZ/Uv061b?= =?iso-8859-1?q?BYxB2i3Mtee+1VZ4Rsg/Qoh2lxmeqLIP5BuU2VPrulPnqeVRqYxG/plqTfvP?= =?iso-8859-1?q?uIRdHAFrNDdX1/5TVU01AhHUusvOr83E+bGBJRULZI2gNye9dg7XVPg6rQUB?= =?iso-8859-1?q?Ny7vMosARu+x2XOPC8PFdGTJBo9cz2gpM24ioom1RthAnxEuZMiuDgqaE4f+?= =?iso-8859-1?q?XPVWtMmWiq4iNkyy8Tae2l1il6er5QMRvmSbezMKBOEGr/EOjB7ha3hhDjof?= =?iso-8859-1?q?YLFEQWi26pxihM6OagntHZlwSaC9O7rlkkLDM9w6E9kV+hh/GFQKb7krvOYb?= =?iso-8859-1?q?/46H5tKTf+BNpLxJFNJI8LKSMN/Xm+4odTTtSU2qB+55DF+IL9ckechXaopk?= =?iso-8859-1?q?b8EMbetV8Lb6SX4aCHOaShJiibOjbhplqPKyhRzUyvpxluTIiTScy7o9vRO0?= =?iso-8859-1?q?vzuNOc8GZKEsPtkvkiWtPyQHrYhF9zFdeGJzblJ1VGgw42NUWo0Zh5PMcW5P?= =?iso-8859-1?q?QC/NzN4yf02I8A6ltu0wiPz/8895uuVrtUz1iV8qhnUoYNy4ZvmKniyYXtUr?= =?iso-8859-1?q?ZbXMorz4lEK+dCW1KYzYmEEFhadR++WSsTm49iZiBnndaEa7sDyYjBuuQn6l?= =?iso-8859-1?q?XS91daE/tpxZ1rh/aF2I31z+CMCV0DZiic53urRRDMTcg/NMmxlClT1xGzyv?= =?iso-8859-1?q?ApicLIeVSe6eDSObH+fZ8xGj5EBnppx9zIvBBoN3NDzRKQfI0A+Ii5qMVZg4?= =?iso-8859-1?q?JDJFp6qYIWumavrFQEegbui7ULonRf32ZI2S1BS+NyMsK0RSN3pSoO0nmZmN?= =?iso-8859-1?q?GLwrjsX1j92ZxuYAeiTH1hrveBP89Wjcp895rAl9VJL4ia2sSPtSY8FfnKMX?= =?iso-8859-1?q?o0gJWcseG9akiRmVpFvhEjtwPLVYGhTrDHUvlFnQfbD9qQGgTxQi3BNJGPV3?= =?iso-8859-1?q?pK3RGy5Y5TANn0fSxrWIzD8DaGIhroUC/sFJ0NEb03ncdvtnBrlOCGZG5MQT?= =?iso-8859-1?q?rIgB0x8/k2ov0/DW9ENL/IQ3VM6kkcFi7RZz0mLY/c/bE09jNbqER5kEtwPX?= =?iso-8859-1?q?DttenjmjbV/grgsrHvGbHKp8J1cCI6lHumPgrxpurx8/XemZyXkLvDcjiSlm?= =?iso-8859-1?q?t2VCv9bKfZ6LQHvs5tXCLSCsBvGUZVK7sFbITDQ=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: DQI+nS9+O4nH0xtncEpsB9gyT5Y/Vngu5ucsg5p1HbewcQqm82AbRhJk0i+hvDFMX8bbjpX0LOSAuZFqwThxuWay0F3rAtoRzlN0wn6UWO6XKZT513C8XmHc3/PJ0JLBztx8VKxpfnjW/tMUbiWUftn9zcP/W8/sm30F7558lZOEg5aqLR77L0Z0qZUQRUhbuubByg607CUncul7u7q9q7RHMMYCF7aiwSx+Qn79oz7WLUYPVGrlsihTxeztMGc8+I+aa8ksewwcS7vfir5OXbuOKZgRAUDgxOl6Xl+2nAH+tIuSVE6O+FrkJVvA1UyG5KDzdkaijeNs8d8exy009gX3FoDjiPHCqql4WTcdNwhTepFMxTm2QSCFpWNKW0Zo9mN6WJJ2/Rmx+3QMukzb4dx+d4/BIrjQpRmGYPllY/CO7D/QHtW4tdRWHoQjRIdb0o8k5wFfAdpuj90GWVzINbNHhw+PHLakfjXjJ3L4mI1IyGmZ52O9qyOlFeU+HQbFrf3xU5aAhpGPTEMEDdKRsjGXszkD80Q/efU3e4boruY+f/e+T/ZR9bvKJ7GlltJiekIhAhy228HVN8NJlTZ368QiL9+0Eps0OqQS0O5yvbr9s1RWy7h4vTpX/uvcVDO8EH6xNQBaLC7yCESM/8whde7ai7dTtF9ioQeTgSzrBZsQaHihIZpgRZHMngHZbj/6lvJirD6RMzvXm3uL8aS2G5+Rk1dtGKRNOqttF0nwMR2gBDVW1AXK5LHF3wy+UHLIdoGxyORYrG1ezcYKe/FwEJiwP7klSJksrjqYvRhT8N227euXAE1RRLOfLZik9m4PfohvTMnPBOgSglwVLDe1/bngR/2L8HNli1VddJ2n8A8GUA0LGWsZdS209nrQKkbBA1dsUMxf099Kb66wdMnCUA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR10MB3022.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e40154d-6fe0-4e3f-4509-08daf8336eae X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jan 2023 02:34:22.9838 (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: sqmW/1qj+DOtCQaJ0fRTTkUXzHFyH80NN62tlfj3Fm2bvrMlLpIjlEPHl8mbLre45KfQhCf61bdpVS7huMJPZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4814 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.923,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-16_18,2023-01-13_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 bulkscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301170017 X-Proofpoint-ORIG-GUID: sLGLnv1vxCXTBCnFIKDpkr1zQEqSIR3Z X-Proofpoint-GUID: sLGLnv1vxCXTBCnFIKDpkr1zQEqSIR3Z X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 555474000E X-Stat-Signature: gk7f7szeond59ttummmr4cytib16yi39 X-HE-Tag: 1673922907-143997 X-HE-Meta: U2FsdGVkX18+pQ4Tz71KEhbKPMC+nUiSe2QGGJ77D1CCScRrAR21z3T15Ef7pRaHOZWTNdj60VM5EnCxlPWhomRXx6ULXzCnH40UQy557v6Iv7FMn10otUz8Z8JRDTvnRBw/jpchWTaPJyZSPCIUcGhuG7UOIJumb2YlD1US8Ecx3Q61zGu4yy2kbh5WbrZa8wz581x2rKqHizp6Ww/DWi+vuQVe1caQNerZuCypCqrKiPTMiQaMlCzO16TTloO98hMS0peCXJT3+1R4DY21UXA+Eo1X2pw9/HRLPoC/ypwRdeMkFsJGxiWP9r6wfUA5u0abJQe62hcbAQ12W+yCra+gdx6t0YJQ/1h5Yi+M0dEb6AMQCi9tvtDqWy67bnMqo4xY4br0IZBtjnSY3Ix/NH9hiNRN1QuG7Vx8CUE/39T6x/MMB6bKSiRlCZS8Aq9eSfJFRa6JGtU6myDpXW7ONv4bdgMPsMAq7uT2oTvH/G2hb+h2rjMCOAH7pOPWhyE8WItiMSe31AWrBrCBn2wAzWOVFoVA6WQOBHDMOK1FNSqL0d5LucCbxPLumOrN1/Dl+gVfm+8yMo2e83C07zOnZ6URq+9vNhsLR4BJBx/ofnlEesqlMy8tesBiVe6AZnVKGfaGd1CB1CUJe2qS2x4K1s8WQSJzfVBga/McwWz44qs/dmcyRuH3ojis0X0xiKnBNBhQX4o0dgrM50K5nlVr58zT6WIl8qPiA1OuEC5iLrxClMMx3MbbC/Ksii0+Q7CZY/otGzV2VzC3zPqO/P2I69xO5GOkJnX6gDpkiR/hHxCKE5AVdXTs0gdbCg/FgTbL2Tz7osME8CvIrpdWyWqPJOq35NXy+n+P0Rcyt6gJBk8BzNVelaeHKyOMi8Hm0/4Z4Z7z2PGjo41JNSLrQgnMu3UH1qCab1RgqXPPCY4SsEXNlnv9DOsMq/0ZT+rycZdmxtvJKSVfG9Wob4+Gp0Z T2GnQFAJ rr7TKBh/j4IskUYXCh8kZjVaxQUWMo83LArM1JwlxdCO0r+TjM/kl12G2lUZ99Kz4QbPe//2cIlSuNf7cJ6QoCrwIOBoRLJdsqP1lIhxtteMJaBaEmhl/PYePsU+14TYap6raZaW5pYQmmVi6PqYyFR9hbw== 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: From: "Liam R. Howlett" Add init_vma_prep() and init_multi_vma_prep() to set up the struct vma_prepare. This is to abstract the locking when adjusting the VMAs. Also change __vma_adjust() variable remove_next int in favour of a pointer to the VMA to remove. Rename next_next to remove2 since this better reflects its use. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 108 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 2ea7bf439f4f..b28f3416b60a 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -460,6 +460,45 @@ static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma) return 0; } +/* + * init_multi_vma_prep() - Initializer for struct vma_prepare + * @vp: The vma_prepare struct + * @vma: The vma that will be altered once locked + * @next: The next vma if it is to be adjusted + * @remove: The first vma to be removed + * @remove2: The second vma to be removed + */ +static inline void init_multi_vma_prep(struct vma_prepare *vp, + struct vm_area_struct *vma, struct vm_area_struct *next, + struct vm_area_struct *remove, struct vm_area_struct *remove2) +{ + memset(vp, 0, sizeof(struct vma_prepare)); + vp->vma = vma; + vp->anon_vma = vma->anon_vma; + vp->remove = remove; + vp->remove2 = remove2; + vp->adj_next = next; + if (!vp->anon_vma && next) + vp->anon_vma = next->anon_vma; + + vp->file = vma->vm_file; + if (vp->file) + vp->mapping = vma->vm_file->f_mapping; + +} + +/* + * init_vma_prep() - Initializer wrapper for vma_prepare struct + * @vp: The vma_prepare struct + * @vma: The vma that will be altered once locked + */ +static inline void init_vma_prep(struct vma_prepare *vp, + struct vm_area_struct *vma) +{ + init_multi_vma_prep(vp, vma, NULL, NULL, NULL); +} + + /* * vma_prepare() - Helper function for handling locking VMAs prior to altering * @vp: The initialized vma_prepare struct @@ -569,7 +608,7 @@ static inline void vma_complete(struct vma_prepare *vp, /* * In mprotect's case 6 (see comments on vma_merge), - * we must remove next_next too. + * we must remove the one after next as well. */ if (vp->remove2) { vp->remove = vp->remove2; @@ -603,17 +642,14 @@ inline int vma_expand(struct vma_iterator *vmi, struct vm_area_struct *vma, struct vm_area_struct *next) { + bool remove_next = false; struct vma_prepare vp; - memset(&vp, 0, sizeof(vp)); - vp.vma = vma; - vp.anon_vma = vma->anon_vma; if (next && (vma != next) && (end == next->vm_end)) { - vp.remove = next; + remove_next = true; if (next->anon_vma && !vma->anon_vma) { int error; - vp.anon_vma = next->anon_vma; vma->anon_vma = next->anon_vma; error = anon_vma_clone(vma, next); if (error) @@ -621,6 +657,7 @@ inline int vma_expand(struct vma_iterator *vmi, struct vm_area_struct *vma, } } + init_multi_vma_prep(&vp, vma, NULL, remove_next ? next : NULL, NULL); /* Not merging but overwriting any part of next is not handled. */ VM_WARN_ON(next && !vp.remove && next != vma && end > next->vm_start); @@ -631,11 +668,6 @@ inline int vma_expand(struct vma_iterator *vmi, struct vm_area_struct *vma, goto nomem; vma_adjust_trans_huge(vma, start, end, 0); - - vp.file = vma->vm_file; - if (vp.file) - vp.mapping = vp.file->f_mapping; - /* VMA iterator points to previous, so set to start if necessary */ if (vma_iter_addr(vmi) != start) vma_iter_set(vmi, start); @@ -666,14 +698,13 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, struct vm_area_struct *insert, struct vm_area_struct *expand) { struct mm_struct *mm = vma->vm_mm; - struct vm_area_struct *next_next = NULL; /* uninit var warning */ + struct vm_area_struct *remove2 = NULL; + struct vm_area_struct *remove = NULL; struct vm_area_struct *next = find_vma(mm, vma->vm_end); struct vm_area_struct *orig_vma = vma; - struct anon_vma *anon_vma = NULL; struct file *file = vma->vm_file; bool vma_changed = false; long adjust_next = 0; - int remove_next = 0; struct vm_area_struct *exporter = NULL, *importer = NULL; struct vma_prepare vma_prep; @@ -692,25 +723,24 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, */ VM_WARN_ON(end != next->vm_end); /* - * remove_next == 3 means we're - * removing "vma" and that to do so we + * we're removing "vma" and that to do so we * swapped "vma" and "next". */ - remove_next = 3; VM_WARN_ON(file != next->vm_file); swap(vma, next); + remove = next; } else { VM_WARN_ON(expand != vma); /* - * case 1, 6, 7, remove_next == 2 is case 6, - * remove_next == 1 is case 1 or 7. + * case 1, 6, 7, remove next. + * case 6 also removes the one beyond next */ - remove_next = 1 + (end > next->vm_end); - if (remove_next == 2) - next_next = find_vma(mm, next->vm_end); + remove = next; + if (end > next->vm_end) + remove2 = find_vma(mm, next->vm_end); - VM_WARN_ON(remove_next == 2 && - end != next_next->vm_end); + VM_WARN_ON(remove2 != NULL && + end != remove2->vm_end); } exporter = next; @@ -720,8 +750,8 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, * If next doesn't have anon_vma, import from vma after * next, if the vma overlaps with it. */ - if (remove_next == 2 && !next->anon_vma) - exporter = next_next; + if (remove2 != NULL && !next->anon_vma) + exporter = remove2; } else if (end > next->vm_start) { /* @@ -762,30 +792,14 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma, if (vma_iter_prealloc(vmi, vma)) return -ENOMEM; - anon_vma = vma->anon_vma; - if (!anon_vma && adjust_next) - anon_vma = next->anon_vma; - - if (anon_vma) - VM_WARN_ON(adjust_next && next->anon_vma && - anon_vma != next->anon_vma); - vma_adjust_trans_huge(orig_vma, start, end, adjust_next); - memset(&vma_prep, 0, sizeof(vma_prep)); - vma_prep.vma = vma; - vma_prep.anon_vma = anon_vma; - vma_prep.file = file; - if (adjust_next) - vma_prep.adj_next = next; - if (file) - vma_prep.mapping = file->f_mapping; - vma_prep.insert = insert; - if (remove_next) { - vma_prep.remove = next; - vma_prep.remove2 = next_next; - } + init_multi_vma_prep(&vma_prep, vma, adjust_next ? next : NULL, remove, + remove2); + VM_WARN_ON(vma_prep.anon_vma && adjust_next && next->anon_vma && + vma_prep.anon_vma != next->anon_vma); + vma_prep.insert = insert; vma_prepare(&vma_prep); if (start != vma->vm_start) {