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 60610E69186 for ; Fri, 22 Nov 2024 17:55:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1C486B0083; Fri, 22 Nov 2024 12:55:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DCBB76B0085; Fri, 22 Nov 2024 12:55:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C1DE96B0088; Fri, 22 Nov 2024 12:55:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A04D86B0083 for ; Fri, 22 Nov 2024 12:55:19 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 4FE7A1A18EE for ; Fri, 22 Nov 2024 17:55:19 +0000 (UTC) X-FDA: 82814480658.25.881C2F2 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf22.hostedemail.com (Postfix) with ESMTP id 39F8AC0006 for ; Fri, 22 Nov 2024 17:54:08 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=XYYeuirH; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ZjNtwYnl; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf22.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732297928; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6k0OWNaojRZdTt55PbvmQjlXynN7OYBb0gWgTg2CWmg=; b=Clf4tS+Ry/R7FrI1kSPKyW6L0jZafva9B+QXV0p0I/mSxQMVGcscOk4xQB+3vM0eyFB5Q2 vymQFCkWwxLEuUioSo1sS5CCeYMatElQI19f2RhIT6TGgCMeJQTPpC/Aw0Ey6mrNvidCh1 /z0DvYWK6wqvC4QYwUYXbRczd8gH/TI= ARC-Authentication-Results: i=2; imf22.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=XYYeuirH; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ZjNtwYnl; arc=pass ("microsoft.com:s=arcselector10001:i=1"); dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf22.hostedemail.com: domain of lorenzo.stoakes@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=lorenzo.stoakes@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1732297928; a=rsa-sha256; cv=pass; b=tUrQaKpfBKq1l+sp5JOyBnk8VfqJCDG2byyEsflIpq07lKJ22dF3Fp7pSsKEojq/Cn1Wzo ZNCxEhBixFJB9/a7+1a8AlmTgEXXtnQtXT0nF9TJZJ6mAys+kA/4w5mAzTIb6yOQhzNDaZ /LWd6phanh2qGa1sqIOJBqFOp+qItX0= Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4AMGBYNP031324; Fri, 22 Nov 2024 17:55:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2023-11-20; bh=6k0OWNaojRZdTt55Pb vmQjlXynN7OYBb0gWgTg2CWmg=; b=XYYeuirHU5IdrIH7tY9IRh5BUkjkKc6uLW 9wJvCxUSqJKYks/jWu2WzDMuDwQRDve3S0J4X7hPqpCBfC1Q0yAIJCP+hkrClZ5N Y3tLaG9jXcL19ycSNUNMnH5K7+yoQh+UMk8JWMUBfI93lQ/MFn8jGOLjhG1nAbyH AVJ2MTmqLMLRF5FUR1Tl2RvyB6iPil+VryfudFeu1ZDcuBGxnVD3nUzvF2dagzYW lldJCQvfVchf4+D9OhUDavK+jmg9agQqVfY7ETtklLpnPTygt23Jpr2DPwhX7DJi WRTZ9vnmWsekPeB505VAfweWZZHo7sA55+o6ZKFRxZgqBwwdTswQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 430rs5g76g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Nov 2024 17:55:01 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4AMGRAxx037329; Fri, 22 Nov 2024 17:55:01 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2173.outbound.protection.outlook.com [104.47.56.173]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 42xhudnj7m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Nov 2024 17:55:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qDizpynzbfpN43pdzw5WUnIDqZCEdVMHmt/IU+3JRl3qvwBycZOuC2scu8+t+Jo00EGlQKLPfGXIvNx7ZOu8BNJgFO2FKBgj7o2czYOqkuYCUNKedFtNPY8zb9JEM4gC13+oRZW9ti8KNR6sqwMk7cBa0NHJceVPNBxKj7NlaMsHV1dV8s8kCt4Xbm8NJzy0j7zv3BPT9/wllgjvcVJHeFm5Uhfq/9SfTHsw7BDEsk76rFsDSJ6IqdRGUpjxQB63jxkIfIDbjqo1pSK9jhSrCxZv8E/4jMj241CnBs/SFB6U6Z+WUkdx6/JQtXP4A8OXeQQVRCVVeQRN04OrIeHeDw== 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=6k0OWNaojRZdTt55PbvmQjlXynN7OYBb0gWgTg2CWmg=; b=VUwGiUNWO8FNo7TDflw1hxR8JTg9uHfWUku0abwm3scyo1mYCcRZdDu6Pi6NW4ijopwOe+yLZYrzvuTQKoEBwhJC/6Wpbr74+T0AlcBbRBAUAuHxh+PmlhdjoBqGTrO3M8jrXnfiSXz9+/rZPF6ZGXdYii7TiFVcFkVSZb0Zbx1W/83A44uO0jv97hOCU/tx0BMMcPAvWEGGnSC5o6O1ED4dIPYS4lOnLmgxC77CydZ9QmYX9g6yXDALEfD8UdLt43SKUHCFXFn8y4tkNXnFHW9sdxKtM7iNLuMvhCH52uRQtv1GbV/PaqRYemtEsYxSCILCG5JvOkjKdldkTuteNQ== 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=6k0OWNaojRZdTt55PbvmQjlXynN7OYBb0gWgTg2CWmg=; b=ZjNtwYnloqWmFK/+CkIQrE7BXG6zONDfcxcyORTdyrGbguxZCt0ZJMYxtmaNRM/6fV+EXjb+Bzx7DJehm6lGlHeKheypaxqz8eP9Nqnq6mw41mh3plrIpDTc48d6bJ1D5SufAOsBgWtgOxvo4gNtUuiDP08IkvfinUabVTqPGIg= Received: from BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) by SJ0PR10MB4542.namprd10.prod.outlook.com (2603:10b6:a03:2da::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.27; Fri, 22 Nov 2024 17:54:55 +0000 Received: from BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9]) by BYAPR10MB3366.namprd10.prod.outlook.com ([fe80::baf2:dff1:d471:1c9%7]) with mapi id 15.20.8158.023; Fri, 22 Nov 2024 17:54:55 +0000 Date: Fri, 22 Nov 2024 17:54:52 +0000 From: Lorenzo Stoakes To: Alice Ryhl Cc: Miguel Ojeda , Matthew Wilcox , Vlastimil Babka , John Hubbard , "Liam R. Howlett" , Andrew Morton , Greg Kroah-Hartman , Arnd Bergmann , Christian Brauner , Jann Horn , Suren Baghdasaryan , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?B?QmrDtnJu?= Roy Baron , Benno Lossin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, rust-for-linux@vger.kernel.org, Andreas Hindborg Subject: Re: [PATCH v9 8/8] task: rust: rework how current is accessed Message-ID: <44ef7154-0f38-46c0-b87d-e598b146f4a4@lucifer.local> References: <20241122-vma-v9-0-7127bfcdd54e@google.com> <20241122-vma-v9-8-7127bfcdd54e@google.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241122-vma-v9-8-7127bfcdd54e@google.com> X-ClientProxiedBy: LO2P265CA0254.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::26) To BYAPR10MB3366.namprd10.prod.outlook.com (2603:10b6:a03:14f::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB3366:EE_|SJ0PR10MB4542:EE_ X-MS-Office365-Filtering-Correlation-Id: f4e7defd-0d3e-4616-1435-08dd0b1ec5ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?wSHUqFGvAP1xV/ZLo/WjvBolMukzRoKkvELeVO8fh9ASP8ErxEj+zFEBJXxe?= =?us-ascii?Q?GEnqQt9O4GHgLm4Tz0JoJWFpo55PytiExzarrWoDw+XXe41hoAq1bLYVdfjc?= =?us-ascii?Q?oGIk5DeoOAgY8ARUGCx4Qqu/z8hJXqlusvoXWkhsdFL2AkETVh7jCeASTDkJ?= =?us-ascii?Q?PeEZ/WjYnCk9EcjmEytCY8GgO8l5Ptd9zQq6EDjkYs9l7pm03xh8/qFXmYpl?= =?us-ascii?Q?FfFL5jFazlDl37F5BTgwn/HpCXadsCSNuA3Im2+XSv99JOPqGTef4cvD+LYv?= =?us-ascii?Q?kndYMQ9LDsd/PVBAAyWJ/jTkENjReiSHmyz2ReahGZQqcqlqzEvFweKLblsT?= =?us-ascii?Q?e3kDAO9J5bLW6nDe4Ta7f7acoAE2NwXC9S71mYhRjaXwdy0DIFnEFXgKmeeE?= =?us-ascii?Q?Vx/OrNmAsSnY+hiWNYoxJatV1DxOq/fNOlfxDLVK1nftK7BhmavtxjUy7oIF?= =?us-ascii?Q?LTgneCIkFYicjImdgRKWF6JUC6lPqM15zPs3muVspI0lnWFdv6zK8Qs7wqV1?= =?us-ascii?Q?2VhafpqQPnaTPrq2j+V6A74YocUaolioorToznBFU/TUrrvTh2boA06aYRy4?= =?us-ascii?Q?zkTipKqy6eHPSSOHWGSf2goHZJJzzqPTEuzQvgaY162kYyfJH2uMigAV6hmA?= =?us-ascii?Q?IEdfUq0KOa2Wm6TjC0uFPFHPWLRmRHM4LZauSN7GTAdGa5CIfaPmIsxWy1As?= =?us-ascii?Q?CbmbDq9dv0bHz/ff5YcXvS/E8zXjNDUXmBsTOW671iduzNqextaIHd49Qz8A?= =?us-ascii?Q?+nZFzHBFC0YmfgoPbSmf2kyW/7zKeuVBZYcn52gDZqDcyjxIdpNFgWZltYh+?= =?us-ascii?Q?jjnHBJkAKE9WDp+m3bq+15smczVfC4SKsnTAbsdxducg1UQ2KAtWKwrSJFs3?= =?us-ascii?Q?VZYWO/IoAoNgRSdJuj+7Uv2nHlKaTjaTqeiLjlIFnftIZlEk3BtJ5Prmte2H?= =?us-ascii?Q?OBh5IG7wUOQCJZzGO7CZaskdxHQHQ1W/7lHjp4bqnQjqRfe2qrQOo5lbZ7aD?= =?us-ascii?Q?zQSeItGJWFcZ8JtvPvgG1l/lSuof6H/I1/0ICxItCqM37WZ4qs9EEQm2EY5G?= =?us-ascii?Q?8oSGx+C/wFp/LAOW3a+vqDZyaxYS9FVKJMPfdcAdtj7t86EexgoBE3GnX0lH?= =?us-ascii?Q?RSc5KPCHqX4/BT8xXjH6J6o61AFuwMtyWU0XSfOCE+Dw1zWq3nQm/G+UBE6S?= =?us-ascii?Q?iy2sjDdvd1VdALJkZXoR1ztDvQ4NaXcbr7QotY6GaMTliztXosK+FJ1bFQ5A?= =?us-ascii?Q?rg87mTZgrT6BU/nKjW6D2eazKDk3pMH3II2AcswmrKc43cAdaNjsW4R5mEHu?= =?us-ascii?Q?nweywl+j/bO54uvVTgTWDcgH?= 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)(7416014)(376014)(366016)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?f6w5Hx7cL3cy1RJgtWIHqecrUEA82jLd9CzJKhHpyslJ4V1La93mXS1N26KL?= =?us-ascii?Q?bqJNg+m8yTVI/byLAVZA9ktcEOgLuD89seROxtpZEHNJ52UikQtaj5giO1Vh?= =?us-ascii?Q?zFiZ1m+Kth3H0SgVFsA6FE2iKc2fo2I0JFuirum9Uk4zVL5O6EO/Q5kUehic?= =?us-ascii?Q?WLQmzSHkUDbI5hBv/t/lxuzYyJDkpi2nSdDXD2AzBrbTn1GMS/U+A3H0Auxm?= =?us-ascii?Q?Tqf/3vK8QtW/tv81V16QYMCpCLNtT+TU3n4ktCctmIcT52B7U5tgG94JZ/VE?= =?us-ascii?Q?sXr7o7r3YyM1eMtVdmA1/YGQDpUZR8F0MqxACeD+8r7jYTN2UkB7G9mBv8bo?= =?us-ascii?Q?dGcNJ4sSdNd6xp+MS0jJfiLxlif4jnVHoUjLp7Sxk0RSZvcwDUu5wa7pQESF?= =?us-ascii?Q?FGy2jA5FWOxe7Hr4KMMWPNHofcGXN8i8ERVeuikty9/F4+3m9gEjdhAN3gTd?= =?us-ascii?Q?TkFmso1t2Yi/NHb5ZP2WATQjTo52RicRahUEBxwGzO/3i8RDwtHHaQqe9FDO?= =?us-ascii?Q?2ygPU8QHBo1Ay7KkggOyv267UyugkUO2H5juF49xHP8O2Qnt1geVGs7L2Rmn?= =?us-ascii?Q?c1kDQTgIRT2Id3dkIjc0NHkP3+L/tvIYmJIyPt4MvCAof7qFOLhcn095xUbu?= =?us-ascii?Q?DGM/hJFcZN+qNKDzqrvDgL7Gqxi8TLI8rsrDJlNsUpc1tTxZreHudnimUVVP?= =?us-ascii?Q?7ZqN1DcBs3O2sMEvSFEKMbTjQndq/y6VCmy2RxobXp5jZSzvH+d+92/8K+Wu?= =?us-ascii?Q?/UvaHsL7WV8Bq3/BnUFgN85uEpQKzWgs+vFxEqmwwxDzp1kY3kzfSA0KitrX?= =?us-ascii?Q?+myoAn17p5S8eRIhVnA0pQLXawj8KHf2zXMbtubwSehTc9RjT+xpOyNFqPK6?= =?us-ascii?Q?HXZVEyEi4hEd4VJNwEC1tZ1ZYu/EDwFQSl9VezJGyDA9e2FZECAq/AyNawmF?= =?us-ascii?Q?Iw6Gjz04Xkn1TZOhEtBSD8NBvyR+QyoNgUZfqlZf464ULDxkkl0jCO3sXZNp?= =?us-ascii?Q?OTjBj0BpiEn615i8uhvUmk7DAFytgjB28tTJSQjzqy2ypiS1Kuw/nxnwlFFK?= =?us-ascii?Q?+AUcha0M2lS2FqWs0/LySmyVqRcReo4hGtuw7CNeRNHhbZ+3BK4pCeq2YULv?= =?us-ascii?Q?ltKdACsEyQDF+xQTWxZ4asb5aL/jdur2ro91d7uZTgLFAkS7PF5A6jH5Ah8u?= =?us-ascii?Q?tgBmQjY+BP+ZmpiUnG+fW46Ymda5HADPCiP7normdjs+G2iy+UmEX7YDdpDD?= =?us-ascii?Q?6XAykGkhCAjuJKQ5vg8hIu8P4fsjEf6t2zDqFpWwtX0S6fLf/WCqHarlrxIc?= =?us-ascii?Q?vlEhD/X8yoWgSs6ARGjdpW/0lSnOR2nMcgbbPOFjrPOPrsBQDbiDoKjlglot?= =?us-ascii?Q?8Dk2N/vFNxKe/W+Ypz72CkUPCI7XsF+9JwyB4R/ME3026Jc++ZcSZcjDT+gX?= =?us-ascii?Q?YxB2bGQ5aiAHMtzi6Py4Mpr5lTC01z1ySsZWuOFtC4PTl+M/biwudPiAclEr?= =?us-ascii?Q?3+5pv+uH4ST415TJn+7gIMAWz7uHD16IoCR4UAJfVenLlV2fTfF8eHxP2rJw?= =?us-ascii?Q?jRFdQSTJ0NJlK4Sts3XQxfFTsjvD0xvpiwAf8kPf/IUFtbrapNUYm2f+pHRj?= =?us-ascii?Q?yA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FcpUgDQftr3BATmjkCGRcuU/W1iLnFnNXANgZVwllVkRK49nu11c8WOxrGfbSkd5up5LqiUI57AQgn1W7FaXs9ndEZQ0xV5UJDtJ4dRSB8+IjaPwXlpG6g/9mGmtxisECJhHXytOtGVhnXaDo4OcgWF0DDz0wlwu2/oRt0pH54qWZmcjzywEhQyspfy8ksUOOn8z9e9R8G//NQWjj1903kV2gfHXPixz9DWwVZ6BZR/b0uOS8zoJ0+hJTQL4dipyZOOzHzcImj6BxmtqZTjRWqDMgtikypjoVl9wbfBa8y4BUSuoW8uSVlbUkNAm8meSAH96OPSDDQF/ksNpbR6i00ag+UA/c+UP6B6GG0mBaw12IFzFRLvRX81ZIweIdMGx4gHdQJQJSfmR3A6nuuq+bxLknC7foHWvNE5qgDMQXlzpDulmHRj5fQu+9usee+YRzXGaUJrpIrLsPZi/AizCHu6y6ZQyew4Ta4lFX4eiH9Sp1dEsyT4Jl/5O34Huv76zFX2QECyD4tj2x8vqeSWRtGXLI/urbXMBUZtAG4XVSk0WzBAhJw5bTY1IVZOh6bvjbZwhbyXlrOIkoIQRPHd0ADXcuowkY+y42U9T4JIxhAQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4e7defd-0d3e-4616-1435-08dd0b1ec5ff X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB3366.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2024 17:54:55.8148 (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: qXISpHQMhpgZXsTvGaBYIVE45dThxl7oJIQu2gnMI0fIprUlkmA4XISRVEeD/XocmVj9N5GJUqUmxzr0ETcS57UlIClsnyIR1BnRBL7n2I4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4542 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-22_09,2024-11-21_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411220150 X-Proofpoint-GUID: f0vlmAWu22zGVkYUcqIQ5bkiXjL0NswP X-Proofpoint-ORIG-GUID: f0vlmAWu22zGVkYUcqIQ5bkiXjL0NswP X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 39F8AC0006 X-Stat-Signature: i7yntqjfrydec1quq7m4o6hjyer3hdp7 X-Rspam-User: X-HE-Tag: 1732298048-47221 X-HE-Meta: U2FsdGVkX196DUgsjCpZnQ6XDojZqhvuFCj4NenMKqaYdDXdkQHoX5OwIFHjvKQSxYwIg7B1U06tATTS2gUpdAYA3Hd5tOP1DOqYdj4wFtJM1dzXsfFwlT6MAluMaJYVcPpz97IRZSF8ucxl/V0HxN9c2czWP5jcTrBkHKxvL+ylUkw3NvUPuSu8s9Wq5RrNt793KM9rgltaU34WhKs3EjrAV/ysc7se7VP1+xksQ6iJbJf7JdPvWumVHyb2Ed82cpHJkLtKG86dqxW06to6xJRMPuGOlXrZKMURkHRZEDDZSBn4M/5IlyzHIyhf5LecOv5q2Y6Ly5mXVKcrB5RsNGk6bIK0spUsSJVKvf2n1QBthlH8Nu/UnDSJrMNYmr2kt1R6odVTWU8BQouno3ReirRX/Do77vqVfl9L0jXl+zEhc6IFIzHwZER/hBOXtWbAhefq3exP14l8hB9OI7j6F3J/NCt26mhsPu67NbCytmYpAsppCFyMrJFLTAVwLafQFGMB4NCLWXkIgR2xPozsNIK+x7anj92ydcBy/nvvPWcZmrPZSjZ+2ziYnO8PXDJBhJBfPWJk5HrjnewGED3Zp4GTaM6wbY+oAEkl5IaU5W3Uqu/KlJz4U6hnfao1JvuAm9sqrh8o0NeQ97CnmToxJVHhcx2Qoi3mEb/Y5ktRCfgjA36CsPHrQ6ZiifEVtKtxYw3MxJb/x0tSuas3MOv+PF+aEC51qdlaeTZNADkfvYpxAMqDGe811AIygGDoo6ummCm+Hno2shIZnjF7D/4teOoS8KgWOiTDjm8343MqjH7Q1ZK2/UBz0yB9j2SYpYb52n8JjnBLLo92apWilevb1d9qCb8BpvRx2fUW7LUuO8CAjJ3eP4Ziwlh+LtP6r4v4lQpMhPK7wWe4T7bHlNsZmG7tJXXPIqZhqJ0mg30I4oPIjzTZxw/Cjf99ML8aTOcJ3+dUJvkFC8yUegK8Jhl l3iwjxXm Vm8LYlzhEribsF3AZg6oGK26kXxv1nL3eaDLS+oSgZCtivEr67MHY7yT4ljzYEzJDqitaeWX3OfWnT+XpSl8/8hZPggtLT/WmFd5Voq0viVTaH4RlESzT8T+PU76tYSFqGywim+WlnX/zA9XQzscQpHeYuzy8YOhhrOBwbx9b96/+zrIeGk7E2LOTSe8dFRNxN9k2K+1JAy11ECHP1Lr+kIRZ32Bwq+0F9YNNiPITGkRDYaHIGr6JSWU2Xrbq2PlSGaB34oCL40PzYyJXthl04g3fV8vuHlppkMb7NYy5egUA2DBCDCq0uONy0p8NYv43BJClwj6aBuEFejEAF2Zux1HWRq0t0Z/7AQgyL6TVukmRhOuyfKrZuk4CIqEVqtqnO7KdJRqiVHmm6IKfGEB2aT7UBPA9M26VU9ouM0hkYjMJTBkN2pEKYok5REu8TMYWCqwhMbjX6x2RtLkuL/WGhrfUTV0jYOkjkPq00Tal1EUCKtvbLiqYMr4Q7pvlnG44lbrMHHoUmo30ucVPqD4HN50RaNiuy36/sey281NjoK6TulOq/NwCtjnzjFEtxCUwIjbRJ1qU8DfTqUOLJOLmsqwutQTTpxjG7g1j1XA8Ct2pGZcgLTpXYj9Vr0Hi2I+EHBe3Lr6TuOdY3+D5Uw6lO1Kbsg== 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: On Fri, Nov 22, 2024 at 03:40:33PM +0000, Alice Ryhl wrote: > Introduce a new type called `CurrentTask` that lets you perform various > operations that are only safe on the `current` task. Use the new type to > provide a way to access the current mm without incrementing its > refcount. Nice! > > With this change, you can write stuff such as > > let vma = current!().mm().lock_vma_under_rcu(addr); > > without incrementing any refcounts. > > Signed-off-by: Alice Ryhl On assumption that the problem you reference with the rust imports is corrected in v10, and that what you are doing with current_raw() is sensible, then: Acked-by: Lorenzo Stoakes Thanks! > --- > Reviewers: Does accessing task->mm on a non-current task require rcu > protection? Hm I am not actually sure, but it seems like you probably do, and I would say you need the task lock right? Looking at find_lock_task_mm() as used by the oomk for instance suggests as much. > > Christian: If you submit the PidNamespace abstractions this cycle, I'll > update this to also apply to PidNamespace. > --- > rust/kernel/mm.rs | 22 ------------------ > rust/kernel/task.rs | 64 ++++++++++++++++++++++++++++++++++++++++++----------- > 2 files changed, 51 insertions(+), 35 deletions(-) > > diff --git a/rust/kernel/mm.rs b/rust/kernel/mm.rs > index 50f4861ae4b9..f7d1079391ef 100644 > --- a/rust/kernel/mm.rs > +++ b/rust/kernel/mm.rs > @@ -142,28 +142,6 @@ fn deref(&self) -> &MmWithUser { > > // These methods are safe to call even if `mm_users` is zero. > impl Mm { > - /// Call `mmgrab` on `current.mm`. > - #[inline] > - pub fn mmgrab_current() -> Option> { > - // SAFETY: It's safe to get the `mm` field from current. > - let mm = unsafe { > - let current = bindings::get_current(); > - (*current).mm > - }; > - > - if mm.is_null() { > - return None; > - } > - > - // SAFETY: The value of `current->mm` is guaranteed to be null or a valid `mm_struct`. We > - // just checked that it's not null. Furthermore, the returned `&Mm` is valid only for the > - // duration of this function, and `current->mm` will stay valid for that long. > - let mm = unsafe { Mm::from_raw(mm) }; > - > - // This increments the refcount using `mmgrab`. > - Some(ARef::from(mm)) > - } > - It's nice to drop this to discourage the unusual thing of grabbing current's mm and incrementing reference count. > /// Returns a raw pointer to the inner `mm_struct`. > #[inline] > pub fn as_raw(&self) -> *mut bindings::mm_struct { > diff --git a/rust/kernel/task.rs b/rust/kernel/task.rs > index 9e59d86da42d..103d235eb844 100644 > --- a/rust/kernel/task.rs > +++ b/rust/kernel/task.rs > @@ -94,6 +94,26 @@ unsafe impl Send for Task {} > // synchronised by C code (e.g., `signal_pending`). > unsafe impl Sync for Task {} > > +/// Represents a [`Task`] obtained from the `current` global. > +/// > +/// This type exists to provide more efficient operations that are only valid on the current task. > +/// For example, to retrieve the pid-namespace of a task, you must use rcu protection unless it is > +/// the current task. > +/// > +/// # Invariants > +/// > +/// Must be equal to `current` of some thread that is currently running somewhere. > +pub struct CurrentTask(Task); Nice, I do like the ability to express abstractions like this... > + > +// Make all `Task` methods available on `CurrentTask`. > +impl Deref for CurrentTask { > + type Target = Task; > + #[inline] > + fn deref(&self) -> &Task { > + &self.0 > + } > +} > + It's nice to be able to 'alias' types like this too (ok I'm sure that's not quite the write way of describing but you know what I mean), so you can abstract something, then very simply create variants that have the same methods but different attributes otherwise. > /// The type of process identifiers (PIDs). > type Pid = bindings::pid_t; > > @@ -121,27 +141,25 @@ pub fn current_raw() -> *mut bindings::task_struct { > /// # Safety > /// > /// Callers must ensure that the returned object doesn't outlive the current task/thread. > - pub unsafe fn current() -> impl Deref { > - struct TaskRef<'a> { > - task: &'a Task, > - _not_send: NotThreadSafe, > + pub unsafe fn current() -> impl Deref { > + struct TaskRef { > + task: *const CurrentTask, > } Why do we drop the NotThreadSafe bit here? And it seems like the 'a lifetime stuff has gone too? I'm guessing the lifetime stuff is because of the SAFETY comment below about assumptions about lifetime? > > - impl Deref for TaskRef<'_> { > - type Target = Task; > + impl Deref for TaskRef { > + type Target = CurrentTask; > > fn deref(&self) -> &Self::Target { > - self.task > + // SAFETY: The returned reference borrows from this `TaskRef`, so it cannot outlive > + // the `TaskRef`, which the caller of `Task::current()` has promised will not > + // outlive the task/thread for which `self.task` is the `current` pointer. Thus, it > + // is okay to return a `CurrentTask` reference here. > + unsafe { &*self.task } > } > } > > - let current = Task::current_raw(); > TaskRef { > - // SAFETY: If the current thread is still running, the current task is valid. Given > - // that `TaskRef` is not `Send`, we know it cannot be transferred to another thread > - // (where it could potentially outlive the caller). > - task: unsafe { &*current.cast() }, > - _not_send: NotThreadSafe, > + task: Task::current_raw().cast(), > } I guess these changes align with the changes above? > } > > @@ -203,6 +221,26 @@ pub fn wake_up(&self) { > } > } > > +impl CurrentTask { > + /// Access the address space of this task. > + /// > + /// To increment the refcount of the referenced `mm`, you can use `ARef::from`. > + #[inline] > + pub fn mm(&self) -> Option<&MmWithUser> { > + let mm = unsafe { (*self.as_ptr()).mm }; > + > + if mm.is_null() { > + None > + } else { > + // SAFETY: If `current->mm` is non-null, then it references a valid mm with a non-zero > + // value of `mm_users`. The returned `&MmWithUser` borrows from `CurrentTask`, so the > + // `&MmWithUser` cannot escape the current task, meaning `mm_users` can't reach zero > + // while the reference is still live. > + Some(unsafe { MmWithUser::from_raw(mm) }) > + } > + } > +} Nice! > + > // SAFETY: The type invariants guarantee that `Task` is always refcounted. > unsafe impl crate::types::AlwaysRefCounted for Task { > fn inc_ref(&self) { > > -- > 2.47.0.371.ga323438b13-goog >