From patchwork Fri Aug 30 18:10:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13785431 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 E414ACA0EDC for ; Fri, 30 Aug 2024 18:11:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C8216B0175; Fri, 30 Aug 2024 14:11:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12DE76B0177; Fri, 30 Aug 2024 14:11:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DD3346B0178; Fri, 30 Aug 2024 14:10:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id AEBD26B0175 for ; Fri, 30 Aug 2024 14:10:59 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 620151C3861 for ; Fri, 30 Aug 2024 18:10:59 +0000 (UTC) X-FDA: 82509703038.13.948BBD8 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf27.hostedemail.com (Postfix) with ESMTP id 1B9544001E for ; Fri, 30 Aug 2024 18:10:55 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=kqMYa2W5; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=d6gbJQj3; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf27.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-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725041365; 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=J8hckl4Wu0Ypk6qGDIVUaB6ue/jw9iZMFOoFOXoGFAY=; b=6ruYB0v1fysH0nVk8n0iJTOxJ1qVPHZIhkO3MLATP/RT3/0zYF9oFJHgLaW0PEg80SEKSy YNZOMvCZgb8gwlZrHNF3vO8fKDgeAJxxdpqV8dpcUikVdmCCkvO1zJt9p0zCvQVXyzcSXY 1BQN9q29lSt3SG5/qyrWoe0Wcr9/3rU= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1725041365; a=rsa-sha256; cv=pass; b=YCpys5LWiEcsAu6mw3eioZDMyUjWz77NSBUu4lON2GamRJ1GD8od7y4b902Xs92E8WXGgM M8iqTbWgY1Q+XxD6ZUqgvZGA3uO5njg10kuC5B/JS6wwwJNhYWQ+jAeDrSRoIBgzcZEZVW Zruwu6Oy5qTRKeW2pVENHr7qE/Q2mZ4= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=kqMYa2W5; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=d6gbJQj3; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf27.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 Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 47UI38SE025963; Fri, 30 Aug 2024 18:10:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=J8hckl4Wu0Ypk6qGDIVUaB6ue/jw9iZMFOoFOXoGFAY=; b= kqMYa2W5FWFkBfU+S2KmAKrZjJzJEjHx7knwDoxlK5gVov5TViN7AKMoo2/kyLa0 cOzKz21iI3F6RMF4SeAmYZLGvb+BPnSK8Vle1IAzMunpO08eF5nYrJ9UzJLEJUjX xa/gtgwv90MH/V73P3ZJbCUuYc2YnZHmRHo5FrpJr5anKFIllodnP2FBfXQB3mVw Rr85r3ZMxsC5zb/S1vOwGU/8pCw9poaCJDR4yoEVYuGklZuG6yLCHdfsW+LMA8Bj WoNOHKfFwFD7KcMpFyQ1dRHDEMQ8LkqCvnN1ll9vrEZ/uccYuMBoe71ThG6/xqbY VQmkNJzt8oRuKD9vRti2vA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 419pugycbg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 30 Aug 2024 18:10:51 +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 47UHG8rr032483; Fri, 30 Aug 2024 18:10:51 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2047.outbound.protection.outlook.com [104.47.66.47]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 418a0ycd8y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 30 Aug 2024 18:10:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IW1f5PBpME7U+MHqCUFdPCB1rJJpszvQK/NRjjm+HUrIwvYRgo+iICpE+ajwEYl4r8d15eEN1v3ytLN6iEgwpBPpC2+wyEqMf0SIKvBwxhu81VMWV6RphhLcKxDW51e01n331luJFFL149Judh1ymkNcOJsGd5ie6b/YHpHsMoLAAuRz6Y1Hy4pEbu0lBug+zYVRldHNmSPVoxM74nqwQKn/gr4jdEMiMaee5DhtGcHVpD1p2kUC8dYJmKN/QXX2cCTQ84CYcZMKuNz6iuuKh5ZSjXcwwibzq1N8PkeDgyU7kM5qEb3l8l4BGdHn9G1+oC5ZQFBh2Fp71UWU/dydJQ== 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=J8hckl4Wu0Ypk6qGDIVUaB6ue/jw9iZMFOoFOXoGFAY=; b=XDKy/9bzR3MiHn+KTLmNvP6nqrNCduyA3VAxG+SOaMJJqpHhLm8XDwg1ZxMI30W3UPwq9JmInI9NxsYm5sl0ViYIujaLXQ89ghX7yA2Klovg1P7Dargo379NTO93bqVw7Uil5lMt4z6asDiFgTix328PqqbXSYgiKIsobFzkkGm5EAKPmI5P5NT8jArZjDyH+mzF0Hv/F+YNXPrc45/H7zocYU43tw7fa20N0g2ddrW7iyRvXZN3M/L9d5JS6gLMzjTruy27vfp6TncjlxWxtkRlNnCsjxZMJRIuiBUOlDjO4e2EZl8iviFLElzs5oOXutAusf2JjnfFTFe3sOq9XQ== 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=J8hckl4Wu0Ypk6qGDIVUaB6ue/jw9iZMFOoFOXoGFAY=; b=d6gbJQj3YerLF8ueNuXVxjHns7i8He+0pOtCUZt+OgySjjdLtvl/J3MwppGBk1drs1ycfx2KZ/yjvnqU0xVRqdjJhzSwMLFzVd/5ncB/NwRgC2xgsOtY93XtbqooyFYYb18zTUym3NLux10XVzVJ9q0ckBLZ/SZLMm2LGp4uMqs= Received: from SJ0PR10MB5613.namprd10.prod.outlook.com (2603:10b6:a03:3d0::5) by DS0PR10MB7151.namprd10.prod.outlook.com (2603:10b6:8:dd::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.20; Fri, 30 Aug 2024 18:10:48 +0000 Received: from SJ0PR10MB5613.namprd10.prod.outlook.com ([fe80::4239:cf6f:9caa:940e]) by SJ0PR10MB5613.namprd10.prod.outlook.com ([fe80::4239:cf6f:9caa:940e%5]) with mapi id 15.20.7918.019; Fri, 30 Aug 2024 18:10:48 +0000 From: Lorenzo Stoakes To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton Cc: "Liam R . Howlett" , Vlastimil Babka , Mark Brown Subject: [PATCH v3 07/10] mm: make vma_prepare() and friends static and internal to vma.c Date: Fri, 30 Aug 2024 19:10:19 +0100 Message-ID: <7f7f1c34ce10405a6aab2714c505af3cf41b7851.1725040657.git.lorenzo.stoakes@oracle.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0176.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18a::19) To SJ0PR10MB5613.namprd10.prod.outlook.com (2603:10b6:a03:3d0::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR10MB5613:EE_|DS0PR10MB7151:EE_ X-MS-Office365-Filtering-Correlation-Id: a196d5e8-95f0-4744-67c7-08dcc91f1332 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: R5JeSviPSa/FM3P6QZHdoEAnD4H1vLCpog0LPPpVREu9kQR001z9T0e1wHMf1A7lARNSEFCIIMQ+mWMBw7rTWWo0HJXVEs8F8IVVlv8sAplZ5rBolZI+Gou5VZEtT6gYzchJbG+dHDyTVK87X2yDzsuksHaosA1CdUGV6YS+A5DfKyW9c+KCxe5OaA3wkgjM5nnwDSJPAOcmue6gOytd6pzFly2gI7klnHtoCt1Qd45Qy78OI/F5d6Dw/N7n7NrxOqSRIS+5kilcyc7pyLXJQMO6n7JBtrganMhNsfYcO7hn+1aiksA2xfPoKwtArCzntLvQG7xEfQyvNbhwTzjX1z7u9Y0JEGfEX2WduC1IJFhlPjxtOF3+KMS4yYOur013JBKEH/p1W+tl6GTfNR4oqUeuLkJ51sEnDyoElI6NoYrcoKZCysXJ33Rf/iZc/JgvPFYpqIDZ7ISbUQP4xyutI6dnKX1dwKsTHou5ToiHHrziPD3MOYuxKIrJDIeof1hlj3SP1ibCRXy4Emm6cT91+vFncSERKy0rgB5WANTgeR+iQlDSMc/uvU9q1CwGqK3NwIojCyXWSao54gKGU3Grmi0aG2JD/kL6uR8Hv8F4O8lBv/9oLTMJHW8DoDow7+4jocos9XxL7EeWMrL20D0zNWQTqY+ZUi/c1m5jFiFqrsJhri8tmyb3xixpWvy1i1JPNsBmE0waTo5D9kofalWKHRavr6dgLyeSnZ46eK5vUsyvhvHZdtIHFXVDej+AOBwTlwJ5rcPAwYigLqfNkMeURlyCVyJ9Zeq2qPo99SWAEIx/RqEzjAIYOyqgLEMaCU5SO1H7+qGFPM/si3d5M8v4YroG2Z3rImeL6F+twHwb6eI+Se+KmZEFtVjYfrYZI0hTI7Py18Yiqzw/G+3xstdYkQMTMLb20yFiSgy16S644xXdMPh6i3Abe688ECtDGwrq2rYeOt05c92TTJUQ90bnOW0uxXjbs8w3UCjUHxNWF/cSpO24MCqzn+ShU7Xc7gTKJiP/EBlduStFe2ehLmht08g4Ki5RtmhSx7CGIEAOcrlnfdP+50xw44RFvklQMWlw2JwbnfxDIHVejWGFOnZ26N6SIL6Stj/PRaEgCxMqre0RYrbDs9L2c9a6FLljcppFtXMLAejhZNE+AYCaDHZFHOPDjfNQfT/IE4Ib7J+NnPuvy6Y4ptV0OIWnk8nW9Tj8WpmfUI2fs7/F8yG/8DAaDowsX7n/kOuLmvXeTZeFxTP/Ji1uvYjn0Q6T6bRU3T8UwmmjC91pghmH1s54jQxBSye3eiunkg5y6X5CXnu7mOCfFK6LRR3vnij+IOqBzbFh6IFOM8kKjU/RsCZNSH1BIg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR10MB5613.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IdEPWPalt+NR/0o2zn6pkuc0hGT7x3eiU1dvZ465VJnNC71VufJoKbLGsL/KF+d7iv1hR7lWc0aOsec2rzWnxgXlNx6GNPmwGX3RPTJbH0SRRjmugTT16KEMLkNBZhDheHw53LX7N/KFekfxMOTiQaLUdbfekQqQo7A20AoFkx5PbF2+lDSBCnrceOX48+fCRCuH8kCD7doVQKZMsKZiQ7+TQL6bXHobb7/lSfp+DQ9aEBWwC5T9ONYwPU50zYhKPjdWCDXzUIkxXSdZbFEGc4MkLNETT5RcgILFwrmBUfOGtWMZSFg6pImNuvYh6cirRfmAXK6y+6BhCswfYLvzk7UMi7IcNDZT4TATDpyFU5OTX8yKzjwhjvQq2zlp3dT3fJKRvmFNyk4LtcG/PlPvGY+1ss85/mOlq2GvuM5WggleEni/GvViI8GkchYG8sg6PDd5jatwj4GpXDPll8NYEA8MsrQqhe/cMIiBdFGxHLxt7coEAAqVTOIIsZItONC9HZnEI9TizR7UjpHkUVxrvVCCO76n04rlZ8eb27zc7upZKa815vFlsMShf1fwcrwntXwjOthPdOJPPcOMqra7OBeWaAeCS4bLIRw4fAeJ9n6cXCSGF92r8m9UWgte/zGDX8Fz0NCEamlWG1EorYSgB2t8+N7yjdSguKhqXpe03IOhgjRkTuUyHGC7MwmFJydyN/HEGuH7lBj9aXIIo3arEwJVPV7RgcRy5EPTVBmZeYlQbFUkALP7D50Itzli9FV0oJYk/L56texBz8teDbf2qOG7l82tZMuhoLl8KKFlVHJXnmrT7bAMCevTg55J27E58l44N+K2KeQkE57/Qfeo8qMRF42YU77ufiiTy+swduLhfH+E8WP9wC6KeY+U7iUcjz098oiBByz+MHfFnED3TqRjZPrFayK/FpSt4ZNP35Sje2DfycJc+323cNSBvrD5PSatqn1MwdtbD4kTWuLJzIJx+hm4RnwXXJnkrsi/rx3EObpEDVDnC91tXP6dsZDCpx7f5WGnoyq6jIFNxDVv4qBXLeVD6F3fA2PuljmwbN3zcyvWmpLymY1ofeup3L1OP3mFp+Xt/X8k9rspHR8voyov8yq8W7l1ZzW/c5gTs+F3iVHRV6+2aKoCc/xEVkq8LSXgATIIAXUt3xiSBEOnkpLgcI1T3v8pJbQeCW/q6Ry9msIg03Vuhw732oSUT/wUJy9dMUFDpmddrDSElr3PDn90ixKPg+V2ui8OhsDjYdBXki6OTGx6UcYmI0ioyhW6YAzOxbyMPrhrojaiBKNaB7ee7ET87J7znWEXJJpLjTKBe61AKhh1zp+MWDbqE6Y2sZ9uR3UjuMInn29mO4gBYOXASKtaneEkUugVIPUq6YOSntUJOiRPtg8fmH//8zPDb2PCKV9ZsAGZWmLnrUJ67yiQHsI918ZOsynccZ0iBbF9S5aBUneBsk5j2RXwynXd5inbUPow3a21ePGFXrjvwHUmuorRzRtG9f3eJEiDLwIcwefycNCp4VH4HPdkm1d484u3qIcA6hWBvDOOH15Oh6H/bLg95I9aTGCwF8K15AOYWw9zP2hd42ZtX1WB9Xx/uP3Q4m/qZX1iXPCbgOw4Fg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: e2LZHohcBLXnED4+dG/bcBn+xzRIVtC4jOUieyiVbhOodAiKpwMq35FwINUnciVwxzYXjNGcZfUSt2z1hekJGRaxMKU8kfzwQhHvb0pDVqKUdP/Ub1HGAllqeL6kX58n8g82ShB0+RnUzDhIW5aNS/BtVUxmPme+V2kNkSqzGRwjF5/ly1+TCFBMjKaYHw5b67rwecj5cx2qVzYuEevySLrICEIPPgscNRqZLUJC/4P9w8H+cqkh7AG0WdPZSUik7L7dKmdjKQHHu8PLGdPs0jSlUbWKkl9OSMJCP8ekBBs9Jn/ieoDwUqE46YhZDiCuiP97YCkuhBk5efyJwFTtpnfRAbaMpxNYcAASxkHmnywp0es31R8v25CBBTjUpUUVKexYa2fXePNqsCHWu6SmLNQnC/CAwgVmq5Zv972aDvgcLa+ZCudrghE5x9An2y4zftD9h9Qzac3elISLpxqX7/+pVpgDNZlaBDN2n9kXRH5cvX/iou2/UGYy5eKB+W0aQcKuVv7EY4TIDPJnOYEuCInQlgC/LVQlKhz5MAIV4JottFP+9LSa9MsGwoR0WZSx3V0hJm0jardPNyhPFc91AUBiR5ZQqdbHujerWi0bdHM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a196d5e8-95f0-4744-67c7-08dcc91f1332 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5613.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2024 18:10:48.5136 (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: cIbwI+KLzjKJphflQFG5HIV9WOj71t7FlSxFucRnoUXY/dEtafsGV4q9n5nPGd/ugRLN10oGnzcbxYZfbtBpBvRC2yMyZaJ5oFMwse2DGuQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7151 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-08-30_10,2024-08-30_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 mlxscore=0 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2407110000 definitions=main-2408300138 X-Proofpoint-GUID: FEZGMSR93vnXwCD2cUhFKnEQRRu42Uw8 X-Proofpoint-ORIG-GUID: FEZGMSR93vnXwCD2cUhFKnEQRRu42Uw8 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1B9544001E X-Stat-Signature: zj6uk5psi46kb7deepddrrygu4q5mx67 X-HE-Tag: 1725041455-423322 X-HE-Meta: U2FsdGVkX18QyuQbzfybZx9h1dVArx/DjU8X3kAwGUzAisUoZm/UV4KYQXOiUVuOqATtGaxZzi2eEHf+ZXFptOiDhOipaw1T4OKCqQK1+NkwJEQw7sLoqTcidp03o0lwLBCGuc8OKpZj0nL1UYwI/ZHglbSTQze4ZcWbaNFjTMTgTQKkDh1wl8G8k7ItBtr6pASO0WDtUjVZXbCJevvZrJ3siP8Mt8Srymq09Y9Wi1M7ipoauH040XA/m40Z+TfIExMbFF1jT3CsGC1u9ykZXZq+RgRgo60BJUgSY97OQBjFnZxdqSD4mudZCXSHb7fKa0XGiRWk9tV3PM2+7WRpleRwhxBEGwH+OqrpVQnPdotOB7W9Qc79vLUc6UFTXvw/B6dAQNWwKzTH644uoj44JARSbyFGcRj+Xh2iHbbxb39gNAiH2NVmtygvKfSBW79ysAP005jMtvggcfswv073TGfKz+rG3gSkTI54c13bztk+uhvoIG5Q1lg9F8hMrSbKiJrUh2UbGNHsdSwMtrQR11EIPGUGW9m5VwcasaYGlfRR3OIEToTUqlLOV5+wQY0H3WS8mjuuxJGJIE7B8wfdepOOjxHr47VilrUp3MuMRufBXDHRNgjJCEuq0yxv0nWBUZdKjqkE+AdgWKq35rwxxYVrbbTc6/ADGZHmzdctPfXa/bNPcSRH1OxfPkcA6onT0Hn5DIJZ5qDj2iphVY545jCWnEwtTjD/kigtmP7wcsT1cGVtygOm9G5hWfYUMc/5O3mfL2PG+hwv/jZRs/vi/y5iDYZ171P3sI6cXYvotmmwRrxEwxDdCd2gzz2ajAjKOMdqTE/S51R+zEdg7nft73lTyaNVL8OtGbxeS6hBRqc98T17552+rg+CoFsyd//WIsnKZI4g+FDJn3qECkWJfhJDEBAv51rORwqJ8TbxY2/cgmXstLwvFNLzNYxk0GnhPd7J4hHTJ/LwUceQnaE LU8uCQ42 EQEwZPbhRbpeZS2NXtfQxpWP84jZqmtlYzkHRvRnRBaGVra+JKbcjwWO/uox0PFjJTlVF8J4d+KWi3BHwRKV4qDn98H4Uq/TROpkRoCK9M0KCx0kCl+uwq1VjbAlaGtHw/oPVxIdUfmSATUzPQCTiUqXqaRVR5RwVi0nTCAWSugjtGpUQh2J4McvO3HTTtuFDNMOL+4rprpCKvEUhhd68S6ds3KYDGznGZV0eVlWTtDvwHsPFSU8A0/D5sj4j62qVF92k4ViCsWbLzNwFTjLbUgkFziFNA6f9NxH0UT8HPRGFZCgfC+d7W8eDWjoeUBwUSEPjEXnRJ1magpaNb3IS/uaOsNBelVKDisPfkac+9lfO6UnKLZd+CVs6nAz8T98EGW+KXhYEZgLQlJ2Ep2BiTSpBFjV1aKNAxq2V+2nad6CHwxtN254G1KV2ECGd5aJoo8IN+8RqBxRzuzt2VbwR0So2uV52JhggGWh53lfAdwC6nvqLmFErVuBz0GJa/KLb2X5RjzSTCqHbwuULVOfFa5ilSwxGr3+zN0QsTg32oVJTBbDXXcgsXkJLAb4Bi3FQdMKd 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: Now we have abstracted merge behaviour for new VMA ranges, we are able to render vma_prepare(), init_vma_prep(), vma_complete(), can_vma_merge_before() and can_vma_merge_after() static and internal to vma.c. These are internal implementation details of kernel VMA manipulation and merging mechanisms and thus should not be exposed. This also renders the functions userland testable. Signed-off-by: Lorenzo Stoakes --- mm/vma.c | 318 +++++++++++++++++++++++++++---------------------------- mm/vma.h | 25 ----- 2 files changed, 158 insertions(+), 185 deletions(-) diff --git a/mm/vma.c b/mm/vma.c index 749c4881fd60..eb4f32705a41 100644 --- a/mm/vma.c +++ b/mm/vma.c @@ -104,8 +104,7 @@ static void init_multi_vma_prep(struct vma_prepare *vp, * * We assume the vma may be removed as part of the merge. */ -bool -can_vma_merge_before(struct vma_merge_struct *vmg) +static bool can_vma_merge_before(struct vma_merge_struct *vmg) { pgoff_t pglen = PHYS_PFN(vmg->end - vmg->start); @@ -127,7 +126,7 @@ can_vma_merge_before(struct vma_merge_struct *vmg) * * We assume that vma is not removed as part of the merge. */ -bool can_vma_merge_after(struct vma_merge_struct *vmg) +static bool can_vma_merge_after(struct vma_merge_struct *vmg) { if (is_mergeable_vma(vmg, /* merge_next = */ false) && is_mergeable_anon_vma(vmg->anon_vma, vmg->prev->anon_vma, vmg->prev)) { @@ -137,6 +136,162 @@ bool can_vma_merge_after(struct vma_merge_struct *vmg) return false; } +static void __vma_link_file(struct vm_area_struct *vma, + struct address_space *mapping) +{ + if (vma_is_shared_maywrite(vma)) + mapping_allow_writable(mapping); + + flush_dcache_mmap_lock(mapping); + vma_interval_tree_insert(vma, &mapping->i_mmap); + flush_dcache_mmap_unlock(mapping); +} + +/* + * Requires inode->i_mapping->i_mmap_rwsem + */ +static void __remove_shared_vm_struct(struct vm_area_struct *vma, + struct address_space *mapping) +{ + if (vma_is_shared_maywrite(vma)) + mapping_unmap_writable(mapping); + + flush_dcache_mmap_lock(mapping); + vma_interval_tree_remove(vma, &mapping->i_mmap); + flush_dcache_mmap_unlock(mapping); +} + +/* + * vma_prepare() - Helper function for handling locking VMAs prior to altering + * @vp: The initialized vma_prepare struct + */ +static void vma_prepare(struct vma_prepare *vp) +{ + if (vp->file) { + uprobe_munmap(vp->vma, vp->vma->vm_start, vp->vma->vm_end); + + if (vp->adj_next) + uprobe_munmap(vp->adj_next, vp->adj_next->vm_start, + vp->adj_next->vm_end); + + i_mmap_lock_write(vp->mapping); + if (vp->insert && vp->insert->vm_file) { + /* + * Put into interval tree now, so instantiated pages + * are visible to arm/parisc __flush_dcache_page + * throughout; but we cannot insert into address + * space until vma start or end is updated. + */ + __vma_link_file(vp->insert, + vp->insert->vm_file->f_mapping); + } + } + + if (vp->anon_vma) { + anon_vma_lock_write(vp->anon_vma); + anon_vma_interval_tree_pre_update_vma(vp->vma); + if (vp->adj_next) + anon_vma_interval_tree_pre_update_vma(vp->adj_next); + } + + if (vp->file) { + flush_dcache_mmap_lock(vp->mapping); + vma_interval_tree_remove(vp->vma, &vp->mapping->i_mmap); + if (vp->adj_next) + vma_interval_tree_remove(vp->adj_next, + &vp->mapping->i_mmap); + } + +} + +/* + * vma_complete- Helper function for handling the unlocking after altering VMAs, + * or for inserting a VMA. + * + * @vp: The vma_prepare struct + * @vmi: The vma iterator + * @mm: The mm_struct + */ +static void vma_complete(struct vma_prepare *vp, struct vma_iterator *vmi, + struct mm_struct *mm) +{ + if (vp->file) { + if (vp->adj_next) + vma_interval_tree_insert(vp->adj_next, + &vp->mapping->i_mmap); + vma_interval_tree_insert(vp->vma, &vp->mapping->i_mmap); + flush_dcache_mmap_unlock(vp->mapping); + } + + if (vp->remove && vp->file) { + __remove_shared_vm_struct(vp->remove, vp->mapping); + if (vp->remove2) + __remove_shared_vm_struct(vp->remove2, vp->mapping); + } else if (vp->insert) { + /* + * split_vma has split insert from vma, and needs + * us to insert it before dropping the locks + * (it may either follow vma or precede it). + */ + vma_iter_store(vmi, vp->insert); + mm->map_count++; + } + + if (vp->anon_vma) { + anon_vma_interval_tree_post_update_vma(vp->vma); + if (vp->adj_next) + anon_vma_interval_tree_post_update_vma(vp->adj_next); + anon_vma_unlock_write(vp->anon_vma); + } + + if (vp->file) { + i_mmap_unlock_write(vp->mapping); + uprobe_mmap(vp->vma); + + if (vp->adj_next) + uprobe_mmap(vp->adj_next); + } + + if (vp->remove) { +again: + vma_mark_detached(vp->remove, true); + if (vp->file) { + uprobe_munmap(vp->remove, vp->remove->vm_start, + vp->remove->vm_end); + fput(vp->file); + } + if (vp->remove->anon_vma) + anon_vma_merge(vp->vma, vp->remove); + mm->map_count--; + mpol_put(vma_policy(vp->remove)); + if (!vp->remove2) + WARN_ON_ONCE(vp->vma->vm_end < vp->remove->vm_end); + vm_area_free(vp->remove); + + /* + * In mprotect's case 6 (see comments on vma_merge), + * we are removing both mid and next vmas + */ + if (vp->remove2) { + vp->remove = vp->remove2; + vp->remove2 = NULL; + goto again; + } + } + if (vp->insert && vp->file) + uprobe_mmap(vp->insert); +} + +/* + * init_vma_prep() - Initializer wrapper for vma_prepare struct + * @vp: The vma_prepare struct + * @vma: The vma that will be altered once locked + */ +static void init_vma_prep(struct vma_prepare *vp, struct vm_area_struct *vma) +{ + init_multi_vma_prep(vp, vma, NULL, NULL, NULL); +} + /* * Can the proposed VMA be merged with the left (previous) VMA taking into * account the start position of the proposed range. @@ -315,31 +470,6 @@ static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma, return __split_vma(vmi, vma, addr, new_below); } -/* - * init_vma_prep() - Initializer wrapper for vma_prepare struct - * @vp: The vma_prepare struct - * @vma: The vma that will be altered once locked - */ -void init_vma_prep(struct vma_prepare *vp, - struct vm_area_struct *vma) -{ - init_multi_vma_prep(vp, vma, NULL, NULL, NULL); -} - -/* - * Requires inode->i_mapping->i_mmap_rwsem - */ -static void __remove_shared_vm_struct(struct vm_area_struct *vma, - struct address_space *mapping) -{ - if (vma_is_shared_maywrite(vma)) - mapping_unmap_writable(mapping); - - flush_dcache_mmap_lock(mapping); - vma_interval_tree_remove(vma, &mapping->i_mmap); - flush_dcache_mmap_unlock(mapping); -} - /* * vma has some anon_vma assigned, and is already inserted on that * anon_vma's interval trees. @@ -372,60 +502,6 @@ anon_vma_interval_tree_post_update_vma(struct vm_area_struct *vma) anon_vma_interval_tree_insert(avc, &avc->anon_vma->rb_root); } -static void __vma_link_file(struct vm_area_struct *vma, - struct address_space *mapping) -{ - if (vma_is_shared_maywrite(vma)) - mapping_allow_writable(mapping); - - flush_dcache_mmap_lock(mapping); - vma_interval_tree_insert(vma, &mapping->i_mmap); - flush_dcache_mmap_unlock(mapping); -} - -/* - * vma_prepare() - Helper function for handling locking VMAs prior to altering - * @vp: The initialized vma_prepare struct - */ -void vma_prepare(struct vma_prepare *vp) -{ - if (vp->file) { - uprobe_munmap(vp->vma, vp->vma->vm_start, vp->vma->vm_end); - - if (vp->adj_next) - uprobe_munmap(vp->adj_next, vp->adj_next->vm_start, - vp->adj_next->vm_end); - - i_mmap_lock_write(vp->mapping); - if (vp->insert && vp->insert->vm_file) { - /* - * Put into interval tree now, so instantiated pages - * are visible to arm/parisc __flush_dcache_page - * throughout; but we cannot insert into address - * space until vma start or end is updated. - */ - __vma_link_file(vp->insert, - vp->insert->vm_file->f_mapping); - } - } - - if (vp->anon_vma) { - anon_vma_lock_write(vp->anon_vma); - anon_vma_interval_tree_pre_update_vma(vp->vma); - if (vp->adj_next) - anon_vma_interval_tree_pre_update_vma(vp->adj_next); - } - - if (vp->file) { - flush_dcache_mmap_lock(vp->mapping); - vma_interval_tree_remove(vp->vma, &vp->mapping->i_mmap); - if (vp->adj_next) - vma_interval_tree_remove(vp->adj_next, - &vp->mapping->i_mmap); - } - -} - /* * dup_anon_vma() - Helper function to duplicate anon_vma * @dst: The destination VMA @@ -715,84 +791,6 @@ int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma, return 0; } -/* - * vma_complete- Helper function for handling the unlocking after altering VMAs, - * or for inserting a VMA. - * - * @vp: The vma_prepare struct - * @vmi: The vma iterator - * @mm: The mm_struct - */ -void vma_complete(struct vma_prepare *vp, - struct vma_iterator *vmi, struct mm_struct *mm) -{ - if (vp->file) { - if (vp->adj_next) - vma_interval_tree_insert(vp->adj_next, - &vp->mapping->i_mmap); - vma_interval_tree_insert(vp->vma, &vp->mapping->i_mmap); - flush_dcache_mmap_unlock(vp->mapping); - } - - if (vp->remove && vp->file) { - __remove_shared_vm_struct(vp->remove, vp->mapping); - if (vp->remove2) - __remove_shared_vm_struct(vp->remove2, vp->mapping); - } else if (vp->insert) { - /* - * split_vma has split insert from vma, and needs - * us to insert it before dropping the locks - * (it may either follow vma or precede it). - */ - vma_iter_store(vmi, vp->insert); - mm->map_count++; - } - - if (vp->anon_vma) { - anon_vma_interval_tree_post_update_vma(vp->vma); - if (vp->adj_next) - anon_vma_interval_tree_post_update_vma(vp->adj_next); - anon_vma_unlock_write(vp->anon_vma); - } - - if (vp->file) { - i_mmap_unlock_write(vp->mapping); - uprobe_mmap(vp->vma); - - if (vp->adj_next) - uprobe_mmap(vp->adj_next); - } - - if (vp->remove) { -again: - vma_mark_detached(vp->remove, true); - if (vp->file) { - uprobe_munmap(vp->remove, vp->remove->vm_start, - vp->remove->vm_end); - fput(vp->file); - } - if (vp->remove->anon_vma) - anon_vma_merge(vp->vma, vp->remove); - mm->map_count--; - mpol_put(vma_policy(vp->remove)); - if (!vp->remove2) - WARN_ON_ONCE(vp->vma->vm_end < vp->remove->vm_end); - vm_area_free(vp->remove); - - /* - * In mprotect's case 6 (see comments on vma_merge), - * we are removing both mid and next vmas - */ - if (vp->remove2) { - vp->remove = vp->remove2; - vp->remove2 = NULL; - goto again; - } - } - if (vp->insert && vp->file) - uprobe_mmap(vp->insert); -} - static inline void vms_clear_ptes(struct vma_munmap_struct *vms, struct ma_state *mas_detach, bool mm_wr_locked) { diff --git a/mm/vma.h b/mm/vma.h index 497bb49a318e..370d3246f147 100644 --- a/mm/vma.h +++ b/mm/vma.h @@ -132,17 +132,6 @@ void anon_vma_interval_tree_pre_update_vma(struct vm_area_struct *vma); /* Required for expand_downwards(). */ void anon_vma_interval_tree_post_update_vma(struct vm_area_struct *vma); -/* Required for do_brk_flags(). */ -void vma_prepare(struct vma_prepare *vp); - -/* Required for do_brk_flags(). */ -void init_vma_prep(struct vma_prepare *vp, - struct vm_area_struct *vma); - -/* Required for do_brk_flags(). */ -void vma_complete(struct vma_prepare *vp, - struct vma_iterator *vmi, struct mm_struct *mm); - int vma_expand(struct vma_merge_struct *vmg); int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma, unsigned long start, unsigned long end, pgoff_t pgoff); @@ -277,20 +266,6 @@ void remove_vma(struct vm_area_struct *vma, bool unreachable, bool closed); void unmap_region(struct ma_state *mas, struct vm_area_struct *vma, struct vm_area_struct *prev, struct vm_area_struct *next); -/* - * Can we merge the VMA described by vmg into the following VMA vmg->next? - * - * Required by mmap_region(). - */ -bool can_vma_merge_before(struct vma_merge_struct *vmg); - -/* - * Can we merge the VMA described by vmg into the preceding VMA vmg->prev? - * - * Required by mmap_region() and do_brk_flags(). - */ -bool can_vma_merge_after(struct vma_merge_struct *vmg); - /* We are about to modify the VMA's flags. */ struct vm_area_struct *vma_modify_flags(struct vma_iterator *vmi, struct vm_area_struct *prev, struct vm_area_struct *vma,