From nobody Mon Feb 9 00:25:46 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2065.outbound.protection.outlook.com [40.107.243.65]) (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 13A3F14AA9; Sun, 1 Jun 2025 03:00:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746855; cv=fail; b=hznrfI9ZvB0dz+h3kQEnp7USZATsIp80beykRZmv04G2bu0QOXw2mROOKtyiQZ8kb3VBkWfqN7YYDDmwDrKS7XI3OiSNoLf0HGRUavc1BHl3Mw7of5jKhIUSsAKL4e1B4SJLbTu5Llg3e3XrPgQGeWQMMX2BfzWR8MFKj8OHDAg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746855; c=relaxed/simple; bh=D3feTtNX2aQLXNsK6GJ9iOSMvpMkPZ+h+BsteP9ODk4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Dvc3MeY8f3ve5X5GoIAhdlldI7Z+JAWr9ZWXwhHXbSSrI8ryR3u2uz+6K69fISMxlnCY1pRzv60u2b0jxFWWez3zascEaAs0j+vj53WPmJn7KVP3mIWfdtsO3TnfkERk0NUmhHObnfZZ69MGkEaE7MW2XAQS5u4cBfwWuI8f/Fs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=tuSv3QSq; arc=fail smtp.client-ip=40.107.243.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="tuSv3QSq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cv/x6WY3BBQB2QZCnm99kWx5roO91dhwXt9B+3WDZPJZQhaXfLkL6XJ4ObrQB9lniGTNHPRa+RgG2U+DrGvHRhU+gYecn65kw3u/hkr0hy2RpgenepOu3O3rTTIUmd01aN3iwyLM2JveKlu5jKgUs1yRFw06nqpKB7c2UHbVrm6abdC1ePLtfSVBu4ZK2LH/cQSC1462ZsDMs0tWU9pHusr5iFsDDnZYPlRuFfYTsv2bnnfN+qgnH/gb9KrVp4zBxtn3PP6gSbyKVXunc4TTG8zaqiDaVJ2P5HfqEaXhpA9UM1EYr7cCHpmzqA8FYnCcZ53kuCNE8cfqgJWiQgAwIg== 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=y/VT6X7nU7Xyf9HpjnUc2WBigfvcuKQnnKDc+zU0XNA=; b=JdWxEQJRK/C8fygrFNArof/ul2uu+WvLK98+7buCp4C+hL2Xh4FLIc0izZJDpqr+dsJwrmnJ9ghTeeEA1ELwbEsUMTJt3PsBFksImw2JlX6pvu2RQqquMmr63tDF5ZtwoqCO5KeFwu8OzcUHOc//KwSDdntBy1rPfBLwgWVayzGD3niwUo7sNwxuoeYddQFqCkfVCO01BKKN6+PIv0zYZj1OEK5C/mPjq6FPLFFSnDZ7uEIi0l7/Z4yqACnYaR4JYNH1rJREeZIqqNdW+AIS3JVfDT5U10DTLOl/Ln/sig4tCFWquqy/AUxMv5RV/dna6mrI+wpyacWN1bNrRliTVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y/VT6X7nU7Xyf9HpjnUc2WBigfvcuKQnnKDc+zU0XNA=; b=tuSv3QSq3uFABK6kFenwgTRXOptTV8Kic3emRKjkEWgVWlvd2tmAdZ1TZJU60YlnL4tvBrxIqSuhLX10cZ0rM63r0YoH6B+lrefBdzfPfYuy6HtwMH/0K9T3ZvOIeqIQPeb38vZHi/3coWotuiuu4YWPrdn/L80xTVT76e39HNM6X71dFBtXAZNrAFK6CTocjZcWzV4YogkcjZ62ZRQQTctuRjr0fNcEVlUDNm+e2OVQKWf7y8oNwdfRbWWG3lFXBRI0iazRBIcm21+WFldz6lXe9geVXmcw0hck+ightS+BW0CE4ly4Bogm4Bie3zi6bfRD00h3HpFz0dgfj8eQLg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun 2025 03:00:50 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025 03:00:50 +0000 From: Alexandre Courbot Date: Sun, 01 Jun 2025 12:00:39 +0900 Subject: [PATCH 1/4] rust: alloc: implement `Borrow` and `BorrowMut` for `Vec` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250601-borrow_impls-v1-1-e1caeb428db4@nvidia.com> References: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYBP286CA0004.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:ce::16) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: 90907616-235e-44b1-413b-08dda0b88410 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z0hXOVJLTEN6MTk1anNBbmcwUnp5d1RSZkgzTkxFOG40eUFSYzVFZGE3ejJy?= =?utf-8?B?OWRqNVR5VzBLVGZCd2NTZWJMZmlnNVpJaW9lMHBwVFRkYUpEY3loOU5STENh?= =?utf-8?B?YnE0OEJSUFNGTkJWTzBRdHRHYlh0c2NNYmpzZFpiaEtpeUJiQjB0R3RVRUw5?= =?utf-8?B?N2ZnSGlob3pDUHprN3lHaitTNmwyeCtPRnc5TitmVmo1UDBnTG5WbXJ2WFVJ?= =?utf-8?B?T3dWTEp6TDBLallaN0JKcXU2dmY4MGN5Y1FXRFBlVUc5c3U1dTZ3aFBQTWgv?= =?utf-8?B?RDNJbXo0WVJ0QUJiVGc4NXdmZVp3dlRVczNVRVYvMmdnZEszdUNWcnM0WjBQ?= =?utf-8?B?T0JQOVBtK2w4Y25FdDVVaFZXUm1OZGZWTjFyNUtMcGMrVmZsbEd2S0ZOVitH?= =?utf-8?B?a2lnZyttcWtzc0ExeEhEaGlpNVFYamwwOFdlelQxeXVaRXUxdjZWdWx6RGgz?= =?utf-8?B?elZOZXRQTDNLK1BvV1VLNmZ4bnJPZ0U3WXByU1hPVkJBODI4K3BQSDdVdFFt?= =?utf-8?B?MVlvak5OT2M5bm5Ed09wRkFsbHNoRjBsYWs2Z25iaWY4SWtrd2lTTjQ3UFYy?= =?utf-8?B?blFTbEZidDU0VTZkakpvcFV0OVp6Mld3Y1pQbVVDY3N5blduVDFScHRTNk9m?= =?utf-8?B?Q1BnYmxrdmx4OVBLcFBSZktGTHhyeVRJVTBiRzMvbkdtVkloV0xMcE96VmQ3?= =?utf-8?B?N2FoUWc5L2cvTjRzTnRnWmVDQmNMUzdqRy9rOGg5UUc0dWJib2tQRDBuUE1G?= =?utf-8?B?M01qV0ZKYjZTemtSckV2bjRYZkVSNmJ6RVE5SHA2NXRDNDdvYmtrK1pTYlZj?= =?utf-8?B?bUg3KzJQMVorNDNEZnczcnFwV0MrV3VXcXMwTzQxeXlhRjAyUXhhUThMQk1x?= =?utf-8?B?NGhTSkYzNlNiRC9hVjJSc0kzMDVKNlo1RWlKRWUyV1N4eGxxWUM0cEtnSzBD?= =?utf-8?B?SWYwVnZhVWpLY0h4SUhkTTc4UThiWnNqMGt1ajJmZjRhUGJscFVIMGRuTWtw?= =?utf-8?B?cStoZ2IzYUdTOXB5aW1oV3ZvdzVWdVlEQXluUGd1cmhnbUtvdTUzQ2VKOXpI?= =?utf-8?B?Umt6aUhZNVJlT1VBcmREUC9tWWVPWUJvSEJ1ekpVNjg4QTZXZlhyMVcwWWE3?= =?utf-8?B?b2hiaGM0VXYzZW0relhwa3BxMXovTVVuZ3dkbFFHWUxRRnRPbG1mbFR4VVg0?= =?utf-8?B?d29nRjJ2T2IyWkg0UjBiQmRFRVp6RVlldkpuMGRzMm9nekJFWlBZNE9xMkhU?= =?utf-8?B?bkc1ZnZDQ0tIZWl4OE94QzRXN0tjV3R4OThOTC96SWJEcGhsSFNGc3lETnhv?= =?utf-8?B?Uzh1alNyMTdkdlFQbU56RFNiL1B5MGZZbGg5MTdTRUpsYzhjUzlIMTNWOEtF?= =?utf-8?B?YXFlSlFCRmQ4SEltWTY4M3hFa2phV29VekxiTUNpbVRrRmRlTUJaVFdtUzVI?= =?utf-8?B?S1pMSEFJM2dWeWs3UFR1VnFocFNwekNVR0dsd3FtVWdYeDRQR3BKTjZ4MlhF?= =?utf-8?B?VGs0aThWZ3hlY25SSk9MRG11UGp4R2hDOFJFSi9YM250TG1YdzVpMWRrU3V3?= =?utf-8?B?U24wdjA2VkovTHlzVVIrZnBsU0F2eEpDMENwOVN6NGgrVmFUZURBUXpQeUVE?= =?utf-8?B?MjlNbWVjeEp5eW5YOGF4RE5KZTVEZEhSS1F2MW01ZUdOQjNHWG5UZjRPQjlq?= =?utf-8?B?MEJ0NGhoYnZnRTdCOEpsd3pUZmI5L3A1K2VwVWRFNTlVUWxjWUNQRjJ1VlZH?= =?utf-8?B?U1JjWXFqTFU0bG50bzhKRWtGZDZXb2VjeWtpNFlMeFJyOWV0YTNCL0kySGdB?= =?utf-8?B?QklzNE43YjllR3J6anZtbWN1dWFyTGM5VDBVaU9EVWd1QWpBb2l5UzFsanlK?= =?utf-8?B?N0tHdjAxdzVkSFF4Zm5YQ2FQWkg0OXRhTmtzN2krV3h3SjZtV0ozejUxb0FP?= =?utf-8?B?VVlWVkNkdmJyMkJiNkhXQ0xZRmt1Z2NZL2dnYy95aERPa203SWNvRjBneWZG?= =?utf-8?B?Z3k2TUxKdFpnPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SXZadDZjYnZBTGFZVUczSTN2WTh4L3dqTXRUazlrY25sbzZxeitYMUlhWnNU?= =?utf-8?B?aWxBWmJCcTRRZW9kQkNiQnpuZWFwcm8rcTl6NnhOV0VncHZlaUtaMFZrNEdP?= =?utf-8?B?amNJOFBBdHVoVHpQb3V0OU1pY25oMjRSUnA3alpOa09sQmpTM3cvdlluOUJH?= =?utf-8?B?eU9FRFdyMTBWSXV0a1E0RUtDQ01PVGhVcmVhYnpYcTE2ZHV2N2plRjRjcWJ2?= =?utf-8?B?S0pCV04rZE9tQlpvcjhwNGRZejZSdjE0K21uREpEZFVWQTM0dVNjWnRnZGY4?= =?utf-8?B?ZHVMMVUyYXk3OVNFTXBObUdsSHNxUjVEcGtEWWQrWUxveHd0WFdNZ2YydnZS?= =?utf-8?B?TVBvRHhBTnlkMzF3YzJjYjVrY0Raa3FOVWNnQ2FZNzRTdXBBWkZ2VDNaa1ov?= =?utf-8?B?dGdudHFNMStEaWNpNVBnSXRRZDVSSzNpbUVBOEw5UmRzdTRSblZOYWNmV01Y?= =?utf-8?B?VXBaV3V6OXFFSkxWZXhsRnJYY0p0dDhGTEJqZy9wcFdtdG9qanpNVVVOdGR3?= =?utf-8?B?cFJNMEZtVVdxL2cycy9LQWpNZm51bkhWYXdReVU3M2FMRnZWUzFQTlhIYmhi?= =?utf-8?B?bjJ2cGtidHVGeUV1UjhVQWxQSVNIL1U4bFNkVGczTDR0UWMybkl5QVhueStV?= =?utf-8?B?Z2h1Q0VEMktWMDFUYkl3SStQTXNuSXcxS0p5KzZaYVpZWGEzVnFWT1BtSzRr?= =?utf-8?B?T2UwaU5SK2hPSUxqUEVQK1NyNmlobWJycUYzTzluWDNMNTlyM3ZpT0VyZEVK?= =?utf-8?B?UVNKQ055Z1M1TWF1cG9DTC9maENTenlVc1llellBUC9OMzZZbm9wcEQ5MGdK?= =?utf-8?B?a0l5bGRYK3MvZUhZdWs4UDFmV2pCZENMajNjcUdpT0VQSWZoQ0NKNFZEMUZj?= =?utf-8?B?cDVDMnEwSVo5TldaNFk2aGpQbTJYeVdVNmM4UFhQbkVaWDQ0ajRzRlo2RXdN?= =?utf-8?B?WmcxQ1krSDVtV3Nkb3k0V3I2Mld4QXUvMzZUYXZrWXgxTGNRb1RvbHYxZi9s?= =?utf-8?B?M29lVkxjam5xdkJWTjBNeit2TE1KRnE1SDZHV0N3OWZPd0JHUnVwTWlNd09v?= =?utf-8?B?d3pGRVhLbTdoODI4N2FDanBsYTdJUC9EWDV3RXZEbVBlWXJXaHVTMEMwcXYw?= =?utf-8?B?WjdYM2tyNms3SzZQc1c0UWdHamVMNWJwV09nam5IYWlCVHAycnVtNjRKUERW?= =?utf-8?B?cDYzaG11M1BCei92QVRzbVFnY05ES3hQVzY0Y1I1V1dEMTM5NUNoT1FYNUdu?= =?utf-8?B?T09GQ3I0OU1xeTBHZk01WTQzS1EwMjVYY2Q5S1JsdXNzbDUweUdLMG1pRkN5?= =?utf-8?B?TjI3ell4N2dWbXl0RjRURWExREc1Um9vNmZ5MkJXdlhWcTVLNnUxNVYxeFpO?= =?utf-8?B?bVJVK2IrMTE0TDgrQnpDYlgzaDQzYVkwZGNGcTVoOWtxaVJ2QUNIZFpWU21i?= =?utf-8?B?QzNvNDVaWCtjdjVjeWZrb21GNlg4Y2lYaFMweis3MVpXSEVzaVhQdU0xWFd5?= =?utf-8?B?STIxZFB4OW1iZFJReUgxZStLUUd5N25lMDVkM0kyQmgxMjNWbVljN3JDWGNL?= =?utf-8?B?d0ZjeDFOT0tyUUU2ckZYM2svb2lRUGhvUlQ3Z0s4di9PbUJCQlE2anFkYXNs?= =?utf-8?B?RXk1T3p4QmwzbHljd2pvWTI0bTdXQ1FCYUY5bTJkTWs4aDJjTkhzU3p5eDhQ?= =?utf-8?B?cUg2d2d5dlVxamRTYTZha1QyWHNvZDZDU1VJMjJYcG1tUVVaVDhzbmZ4SW5r?= =?utf-8?B?NDNZQXI5YkNqU1pRRlVtZnhLZkZzQkpBNS9ZdVBsWVZIWDI0K21jU2RDbHF5?= =?utf-8?B?ZmdmYjZuVWZPemwvOWZ1ZmV5cHFnWjhnSDF1LzgxMExDSmpKNFBnNng4U0sy?= =?utf-8?B?S1dRNFpZdnlrdkFoYmZNUC9IUHNDWWZWeDBJUGFHYS82bnJ0VnpJWWwyN1Vl?= =?utf-8?B?Z0FDM09kSXZXNVZybExvR1NlY3B3V2ROcFJIMjdlTzNTaFNyMk5VbmVrWWxX?= =?utf-8?B?c1IxdGk4aUdINTNHc01udVQ3bWMzOWFxRmV2bCtvK3JUemFiK21UZDhZa2pn?= =?utf-8?B?bThpMG1jSFhlYUNiZ3pCUWlORDMvZ29YUm5ZaWhDbHE0NDhwUVJWTmVTU0dm?= =?utf-8?B?d3ZIazVJMDQ2MXBnVXlVKzJmakNKMTZWeVcwVlo0Z2UrYm0vcDgyUkhIRjA0?= =?utf-8?Q?+cR/u4yxMKSRr70nws+hBr57Edu44qCe6pdr7AZAtXqM?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90907616-235e-44b1-413b-08dda0b88410 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:50.8865 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 37LYVRfdrC6X9Ip4zNAzohGgXHf9XJ5qfxrsLeBpFFbcotJH9jGwGqzTbys1/tsN9f3H+WHMkmAOZh+BIK0CcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Implement these two common traits, which allow generic types to store either an owned value or a reference to it. The implementation leverages `as_slice` and `as_mut_slice`. Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl --- rust/kernel/alloc/kvec.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/rust/kernel/alloc/kvec.rs b/rust/kernel/alloc/kvec.rs index 1a0dd852a468ccda6ea1b521bc1e7dbc8d7fc79c..45f813f69fe0f338a83c577752d= d3ba1b3b2003f 100644 --- a/rust/kernel/alloc/kvec.rs +++ b/rust/kernel/alloc/kvec.rs @@ -8,6 +8,7 @@ AllocError, Allocator, Box, Flags, }; use core::{ + borrow::{Borrow, BorrowMut}, fmt, marker::PhantomData, mem::{ManuallyDrop, MaybeUninit}, @@ -890,6 +891,24 @@ fn deref_mut(&mut self) -> &mut [T] { } } =20 +impl Borrow<[T]> for Vec +where + A: Allocator, +{ + fn borrow(&self) -> &[T] { + self.as_slice() + } +} + +impl BorrowMut<[T]> for Vec +where + A: Allocator, +{ + fn borrow_mut(&mut self) -> &mut [T] { + self.as_mut_slice() + } +} + impl Eq for Vec where A: Allocator {} =20 impl, A> Index for Vec --=20 2.49.0 From nobody Mon Feb 9 00:25:46 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2059.outbound.protection.outlook.com [40.107.243.59]) (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 A7E367E0E4; Sun, 1 Jun 2025 03:00:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746858; cv=fail; b=m30gkiP3Mo7aqfFznVffZ74aE5huNTmyb7cdEOrl9sZ58C9HOdBxqLiHxIMmVwbmSmnSLO76SkYdbI5bGmkkAyZQqbWKJXz4PeW44vxlCytUb6vJGw2XQcUOg/Yl55KggvkCAFgp52gMc0ulHgRmXyEucD0F+2fkQr4ZQs16MTg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746858; c=relaxed/simple; bh=eaXK5mnzwWdzW9OrI1hUQQmzsojc+QI/JkgRudbtKEU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=oTcFu4JvA6jgdv5kHb6BpUAQXWkOIpBpLwDOjko7T7tLSSoo95tA8aETzM3sXR6vw46VGaqEDwB2vacnsPgIRsdVNBeLIemAY/dvzPIwbJqqd827YrhlamenWjKYf/U9H1zK9BzrmXQKY5qw7Y/oSE2/VGOF1gWAvi/L4SJa98c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=QN4/01wk; arc=fail smtp.client-ip=40.107.243.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="QN4/01wk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TKP4LioyAAg80S+0YC0QrcXEjWewOo7MrGU8y6ADhwcJufx2y0vkSsYuMX3IsRqKF56qO2p3fYuIAHD4f6wIkHKGR6QVPzntvDHq4PVtUKkFK2vv9b4kF7HmLNlw9P5GIYs6sGZCdYFGud2jb83jt0CXZ1yyQQqgn5vzGFmOn6PPaAKxG8umctDrhm+x+yZ4+0keIVwJoiqdCiHdXqGOlFuFmJSJ1QdnjAyWM5l8X5PpPzzKR75/0eY390fSt+LJzaH12OfItBGONkW/3n5ZErAeSmG7OmerLIpi7MRlT9MhQf9MbxNcZNBSaXBEjV/32unj4Buq9Aik9wBAUquyoA== 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=DEYW1E/oawWhPioCdxXtIhrmaOIB+urdAyvEsD35Wv4=; b=lAZ55QBLJPyjK+SskVaKUk44MkRSHoWHx3zUcMGg6OFfxPArcUezVW5WG2XT4HpZIq3k3eG/RRQR0d9boUSvi0/eiz0EbOWNECntrdCTrewH0wXDA7d+VcdiaAyCdeqMKA86kx5bMJ9g0/9YYs3TjCEv/2b0ZCAlbi/1IjdNCqZGJsdCqaROl/HZ7yPKFYNTWMxtcLrGeDTU3tgalcoSmBDMCA34shCbH+6Kl97ZVqqrilqWFFA3lNfNJ4+0k0oyxMRZrleyL2hK6wdSdFO0dNDiMvW181fxs3CPl0fN6q5vgqcR8UEquSZM6a/VxDvUh2GgbVMqZ2PR4mtXSK0VlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DEYW1E/oawWhPioCdxXtIhrmaOIB+urdAyvEsD35Wv4=; b=QN4/01wkpM7v4anNP84ivMRwuQzUJA8mflhQmLx/io7zeA9GAb9J1uBoscya2aJ6BDn5tn8vNIlma0jpjDSnsb/REZ9j5mZVc2JlWZ76ZJnC4B/omdwjmQFRSDIfJhIRFWGdfXOANZ8StC76U/vCEKmEeOEbHyz2Wx4NKO3DgVhvR+5F8ToM+h3YRaRzfeKFwr56qNwW2PErO/upSG//CP3jgl7WlUTK88zlvRAp5QOnyaLfHx91SVKYmjhjFaqgCh0AIyLi8yXB+qbQfS+SzTREWgrmU/4PdgHFYQiLvJMIPpDhccs2vU0v3UfYL5X7IDFwXFaD7xn2SEXBirAi4w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun 2025 03:00:54 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025 03:00:54 +0000 From: Alexandre Courbot Date: Sun, 01 Jun 2025 12:00:40 +0900 Subject: [PATCH 2/4] rust: alloc: implement `Borrow` and `BorrowMut` for `Arc` types Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250601-borrow_impls-v1-2-e1caeb428db4@nvidia.com> References: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYAPR01CA0009.jpnprd01.prod.outlook.com (2603:1096:404::21) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c5c3c1c-c4e0-4c4c-4406-08dda0b8864d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Q09WcXpSR2FMQkc0ay9keTRCcFZUZzFYMXByN2JjSnRWR2Z3QmgwWC9rMnpI?= =?utf-8?B?eUhLVUxXaW0wWWJkd2dXdURNN0FobUc4QXJwVTZuT01rc08zZFNNZmVNS3Vz?= =?utf-8?B?Rm1TK1JHSDlxaUdSc3F5ZjVVbWZhM2kxUG1weTV6MlhNd3VmdVNUSGRNMlRS?= =?utf-8?B?clIyVDZBelB5Qkl6Y25Pd2tLV1YzN3p4anh3Wmk1aHMrUS9SZHdVUThDSU52?= =?utf-8?B?OFdxNmVwT1IrcmZGSTBmMURQRm03c3hLajk4TWYzbThtODZkR3pVbnROUXpi?= =?utf-8?B?N1VLRmpJMHZCNTdzMTl1aEhuNlluQndKV1JtcHg5UDRENmdpSTNTQWVEUXNr?= =?utf-8?B?bzhlZFZyWG5VYmMxQ3FIWjcwTmd6ZWorOE1Ic0wzUmpBRmkwM2pGYTNNYVZt?= =?utf-8?B?WE42N2xGKzRvMjI3cjlrRUkzbkRXRWtyRDREeXV6bGNCWWtoV1lUd0kvVGxk?= =?utf-8?B?NXNWSHBybUpHb3czWGU2RjMvUGxPNHZpZnBNZ0t5eHVHSWFFYVRZaTE4R050?= =?utf-8?B?aGFrWkx6RXFCOHd4Nmc4RS9YWlBxM0lWUXVYL0w3R3kwREZuOEpMUHZ5cDhh?= =?utf-8?B?WWhkR0hPVTRjRS9yK1FtTTliQkMvWUNFNHN4UjVabjJnVEdJM2t2N1locjVC?= =?utf-8?B?VjYveXpWaG5UUHAzbllHelVqdkozbC9jbmZlZ0RRbyt0ek4rNlhyN3dYVkRI?= =?utf-8?B?Zlh6dUJKZEwxZVFwdGVwSnBaSHNaV2dEMHlzY2NSTk5DSCswLzhQaEVqUm5a?= =?utf-8?B?OW0xcEFxNklRWTV4ZGdyRTNOekljUThBMm1Tb1BhUGxTVVZTL2JHS0V1N0xw?= =?utf-8?B?djNxUUhWaUFUdXZPV05uT3FKRXJ0ZHFQRllZMFU2N21jNWtGL0lsUncrZG1L?= =?utf-8?B?bWpENjJVQmJTMjNrQjNCZXBvVVRvQ0RWYUQxYk5QZ1orSmxSaWlEd0FkbXlQ?= =?utf-8?B?b1ovWDhBTk44QkM3R0tjZGhVMjNLaDVoWnp6dFFYMFhrTzVqcDdUNlh0NWlr?= =?utf-8?B?d2VXSlNHRkNzYnk2UklPOGtsV3VudlZ1bzY3ZmhkWWVwd2dpTCszczZnSElB?= =?utf-8?B?azhLemdmcGl6TEQ5NDkwbk8wZ1YrZzNwZDBZV2cvTFozZEZQMFA3K1VQZmlM?= =?utf-8?B?MTVaSWhMc2NGTWdWY0VLdkFsVnJ0MkgzUXVLeDA1V2xRQ3hyd2tYd1I0SFUr?= =?utf-8?B?Szcza0hpYzY2SjZ5dEhHWVB3eDVVaFJxSm9URWpGaUFCbERUWXdNMXZhR2FR?= =?utf-8?B?cThpWTRVYlBlWUlUUE1MSGUzemQxRVZQeWhvN2dYZ0ZRTFZNemVyNFE3MnpS?= =?utf-8?B?NnpQeGxwakhqVVM5WFBITEVnM2NVWWpkWjRSOVJ5dG52Mnl5SWh3Z3dmK3BU?= =?utf-8?B?ZGxBVWNnWnNiOVZNM1Z2SERxQU9yNEtEVDF6UHhlZjZWT0paQUpBYlZYb3gr?= =?utf-8?B?bjhaajE1S1N3RHl4YTRVV3F5SWs0VDdlRGJsbHVXWWlpbm4wNWxET2VCQm9J?= =?utf-8?B?UlpGdDJLUnp6bFcrQmtyanRMakxKOG9hcENMbUFBRTBvbzFKampybHUrMW5U?= =?utf-8?B?clNpV3JhQzVhOG9wM2dhUk13WlV0YTdSMExCZ0FSY0pIZ3ZVSm1UcjFiWEo4?= =?utf-8?B?YzlIQ1h5UlFzUGtua3piSEJ3Z1VFNktFdkNaaW4waEwvWUpKSHlQYmVtb2I1?= =?utf-8?B?T1hWa3o3ZFNIMXFHcTZ1UmdxQ2FsNWFpUkVIcFMrUFBLOG9JY2tZYTF1d0p4?= =?utf-8?B?UEZBcExBWEpDdjdiWEtaMXFOTjE2QnJVcTRRazdoaUl5UzAzSG1ya29VbnJX?= =?utf-8?B?Z0M0b3hLRkZGRnY4c1R5aFMvZGt1V1NMbjMrRW9HL2xmOGp3NzVZa01kWlNz?= =?utf-8?B?VHlpcTEyVWJzUUlxSVFZK0FKWVJpNFZkaDRxRUFnSjV4R3l2U2Fyb00zcUU0?= =?utf-8?B?SzZ1Y3hOeTVxNTBaem1qU0FubXJXeVVEd1ZWang1OW9rdTQyQm9XV3lpWU9F?= =?utf-8?B?NmtjcDhvQTdBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SWJheThBN0RLYlhud0psRFoxQUVsL0tqU2N6cGJwUkZRV2pzdjdlUTE0N2dX?= =?utf-8?B?QVlnekdWNHVRbmdMQThqT3FrKzNycHpDUmdyQXVOd3laTTgxQ2xQNzRHVSto?= =?utf-8?B?cGxLNnpGOTZsbmQ5ZXVyUzZmdjVwUnIwMHNVUE1lcldkQlptMW5DNjl4Q2Q4?= =?utf-8?B?M0dFUHVJMnV3RDBhVGhhUjNnR2xNZVZvamNGWVk5SUZmMEc0Q3lzUVl1T3hZ?= =?utf-8?B?SVgxMExZVmpRNjZyZVI0K2QvRERxMnU5OEVHQkNCeGRjSHdvNVo3cVZZSFdR?= =?utf-8?B?R3VpbkpJQStSM2FyVDZjNHlKTmdGbmFHV2JsMUoxa1Zoa3FLVzRyWTIxRnRM?= =?utf-8?B?alVMaGptTmlvY01XMktqR3gycnoyclBneHhTWmJwYlN0c0J6Uzk5d3dNZ3N5?= =?utf-8?B?bWUxUzRiMGFvbGtrUzNhNHQxSjhXQy9NZVZndzJEelBoS2piWTRVSTNhYlVk?= =?utf-8?B?eGFLMDF2UDZMNmdnZnF4TUY2d1grSzNlUnVzN1RES255MW9lekYvelJrdFVR?= =?utf-8?B?RTcvU2ZuY05jUCtrdFgrTCtkajhGRDlmekd1VFczOFRScklZZUhqZVVRMGNt?= =?utf-8?B?dFhUd1c5bUlxUmlHVFBab3VMajQwWGJiYnRHdUVid1FhbkRJaktoL0Q2T0d3?= =?utf-8?B?QjY5VTNiaFdiZGRYTmx2bXM3SFJGWlNVa3doTjlaaUI3YnR1VThCdGJZbVcz?= =?utf-8?B?czhRbDBZb1VLeWtwd09tekYzVzVWZG5qYXliRjBPZzZjTGYyTlRXVThjbDEx?= =?utf-8?B?d0FmcVN4anBPZzhBem1oZkY0djhacUE0c3RvL29vaVZlZEtzWWhXZjBhWk1O?= =?utf-8?B?UHVzV2NXaGhKaUFyMUdkb0ZORGVuRWswTmszRHE3ckdRUGo4V3hZb0ttYW0z?= =?utf-8?B?aXdCY2ZHZmtxRjFnam1jNWxoSzJ0eXE1V0U0NHpqbXVsTG5TaHpmbmpvNWMv?= =?utf-8?B?eGh6MVczT28rWk5uV0E0UFVRd3IwWG5Cbk82TzZCelRGYWtDb0pBTWVoNHRx?= =?utf-8?B?MGlMKzE3cFVvZllNYXlUMEtoYWI5QjJ6V3ZTamJnT3JnNHl0RVF0U20wSGFp?= =?utf-8?B?b2NML20zNC9zRlB3UjYrKytNYmJiZGJIYmluNFJrTUk5VjhzOHk0MGZ5NlNY?= =?utf-8?B?ZDViblRNUGNYSXgzYStnTVlWN2Z1SDExUTZxSXdQZEtEc3U2NGVMZFJTWVAv?= =?utf-8?B?OGtrTUNHeEIvY2VERE5NTTZLYlZLUmQ5d3dwOENiMEJlUElpSGRNT3lqN1F4?= =?utf-8?B?eTJHczhla2FHb2tjSzlEVFdYZWdrWXFVS3oyc0dZM0pKcE9USGJsTGpNMUlu?= =?utf-8?B?Q2tyd1RhNjBuK1pXTEc4dDVwU0tKRUFMTk91OHhYb2pNTk5IT1Q4OGtQdHor?= =?utf-8?B?a2xlalRncnNuWHRFSmdHV1J2aUcrcnlXK1ExVi94T3Z5ZS9WZmwrd1NsYlZW?= =?utf-8?B?S1JQVm1wazVPbFFtVnI3STd4Yy9xMGM1YXNFUDd1NVZ1cEE3WWtQaHlFWVpl?= =?utf-8?B?emF6RU1xMVJld2M1MmF6OGRFYmRta2JlREN5bnJ1RVJENVIwU0ljQ2FCcFBy?= =?utf-8?B?Y0JtTnE5REF0NTJPU1lJZHBxNFNvOWxsTEpBeU5TenozRWJMcEluYjlzek85?= =?utf-8?B?c1c5L3dVS3ZpMzhsSnI3d2ZXS1J2YnRoVno5NHB1aFE5QVFEbEdzdGJNWWtn?= =?utf-8?B?RHN0bXRwc1RkREpYNHhDZ2Y2cklOVXJLYmV2U0tmN1hLVlE4MHdxVUJrRU50?= =?utf-8?B?QStsQXVIVnZiN3FHdGw0RkJrZjFKMWszTU5FNXNycUZ3NndOUDlBNGlyZjBw?= =?utf-8?B?dmhTWXRLQzJZeHpZQ05iNjFQenNJU21PcjM0VFJLQWpQdjdQVUpUVUNjQWxx?= =?utf-8?B?cjJMYXJ5SnFFZ3RMb0NiTmlwUVVOSHIvaFlNWHVOZW9UYm13TVVvMGhsZTFM?= =?utf-8?B?MTBwbzNDT3RiVmlrWHN6ZVBzOFhoaFpqditoWmQzaGw1bkw3Qjd0RnJDZXRD?= =?utf-8?B?bGZVZFJyL1RKMkFHNkhoUEJqVW9SclFoUlBqYXBLL1V2Qkd2aHg5TkFvdmN5?= =?utf-8?B?UkVSa0kwTHJ6c2grcTFQUUJSeGJFeU1OK3V4ZkRFbGl4eEJNTFduMTh0Q0dD?= =?utf-8?B?NnY1WmV4SFZMdGw2ZGZocUxBVXZsK29rT0dVMGd2TCtzQUNtZVA1Y3lFcWti?= =?utf-8?Q?AyCIupmvFTzB1OPlrIPl5Zm+aHYEprGlJO0mviz5rtoK?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c5c3c1c-c4e0-4c4c-4406-08dda0b8864d X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:54.5252 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4/7UyJrBw7pf8o529a3MHqqA99rj1UUo2pW94S+uJvJ0VTZwNM95o6ost1rPwXrjpaigQ5+AsUR3Ewq8ooiHYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Implement these two common traits, which allow generic types to store either an owned value or a reference to it, leveraging the `Deref` implementation. `Arc` can only implement `Borrow`, but `UniqueArc` is able to support both. `ForeignOwnable` makes a call to its own `borrow` method which must be disambiguated. Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl --- rust/kernel/sync/arc.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs index c7af0aa48a0a049bfeeba3a81080355f4d381738..40507e8901c349ba5f782457c20= 3ff4cc181dd6c 100644 --- a/rust/kernel/sync/arc.rs +++ b/rust/kernel/sync/arc.rs @@ -25,6 +25,7 @@ }; use core::{ alloc::Layout, + borrow::{Borrow, BorrowMut}, fmt, marker::PhantomData, mem::{ManuallyDrop, MaybeUninit}, @@ -406,7 +407,7 @@ unsafe fn borrow<'a>(ptr: *mut Self::PointedTo) -> ArcB= orrow<'a, T> { unsafe fn borrow_mut<'a>(ptr: *mut Self::PointedTo) -> ArcBorrow<'a, T= > { // SAFETY: The safety requirements for `borrow_mut` are a superset= of the safety // requirements for `borrow`. - unsafe { Self::borrow(ptr) } + unsafe { ::borrow(ptr) } } } =20 @@ -426,6 +427,12 @@ fn as_ref(&self) -> &T { } } =20 +impl Borrow for Arc { + fn borrow(&self) -> &T { + self.deref() + } +} + impl Clone for Arc { fn clone(&self) -> Self { // SAFETY: By the type invariant, there is necessarily a reference= to the object, so it is @@ -834,6 +841,18 @@ fn deref_mut(&mut self) -> &mut Self::Target { } } =20 +impl Borrow for UniqueArc { + fn borrow(&self) -> &T { + self.deref() + } +} + +impl BorrowMut for UniqueArc { + fn borrow_mut(&mut self) -> &mut T { + self.deref_mut() + } +} + impl fmt::Display for UniqueArc { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fmt::Display::fmt(self.deref(), f) --=20 2.49.0 From nobody Mon Feb 9 00:25:46 2026 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2048.outbound.protection.outlook.com [40.107.237.48]) (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 591BC145329; Sun, 1 Jun 2025 03:01:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746862; cv=fail; b=Avvvq94DL8vIwkeprpBFaw2EkB+W0GeDj8RE2KczJLTg2YZg48tJ8u6DTkRk0d8jHA8WzsBgjTSYv6B8Zl7tc+NAeWCYNVf5P2Pazj6mEpaTWpe5pH/ztgURxgAsZXTfdwxntQ/asnzh5h9j4/H7+MLCfSgR+aAgUPj+FTK+SZ4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746862; c=relaxed/simple; bh=ebcvq3z6t9AuUKzqD5MysyAPT7vVf1/sKy+/t9w/YK4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Ckr80V8VoHrACUSZ6tce95IcltMUn2JjSimDBOjn+2tIwp4Nd2lK7JVV3TejcNYH4XYOQWGa6X0Mzx/JzlLn32qHletNsk+K1Vn0EDhueLSnr0sq5TtmwV6WSMZqZCrUgwYbza96hFpi7qi/s4xOmyDQJboQuK0xb6rJT6+vyAA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=neDVOIVy; arc=fail smtp.client-ip=40.107.237.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="neDVOIVy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lMOuhOhAdzp5tnckC4y+siU3HPj3go0p8fP6+jrwqANModaaCOxvM20DuYtLK541j4gMmG4ejXtbWJ/sHx9eF57AHEuh3zYMdUIMXxMBNkHRKVWyO7DVN+m+Lznq9nzDbH9pzo8QMhJu1T3q+UOw4CgmucCPUGz1DqrwHn/w/B4MAlJalr1Cdu5A0PVttHbOF8rWs0+p1qLqYHg28ajqa+gdm+AE7RTSd4v578/dZYPWv58xN39MbjRjMCw0crOQs6pySPHoGn1O8AgQCvVoIDKV0+hPS86y/XkooPjODZdpVus/uCj2P/jy67EPSeIfruqYClX5YCw22qE+rW6VUQ== 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=6XKRc3h8Gz7saJKHEi9GRCXRi6s1HSztmuk0QTFKvPo=; b=niurBEyKwb8hf6dvN1gvn5O1jrdV8jeoOwcMtKl4fE71D6abEBquKs9RHDD4cNT2Nt5P2PhHau1n9f8Z1emn+8ChvMROABofCI4HasZcYlppCNE3vcKcAA0bpW0l9q756LwVSRyrACHSd0lWQ3QLxefq+f8HUinfmlnvkKq15rby5BWRk6PrhV1/A4On2ZV3z8dP7/pR/bGQXurGZi4j8WaxhJGK6d9XqdWyr32Nr3cHpYY7McEdsBd6Hfk/GxQDFlHmvZW5jEjNRa28JEk4yLTNSbPoJvhpagP1HLGLRdTh2ECsZ6A+ehTIVYSAVL9odi0KCGCWKaB9gvYwt5vXzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6XKRc3h8Gz7saJKHEi9GRCXRi6s1HSztmuk0QTFKvPo=; b=neDVOIVyaTsx6CJDU+nSX6VYHJ71nN8pU9iv4clWqxbBTNQuNv5A+dmm1bRs9v3gg2kvItORpC1cIfJK7lYL7xC47BLXxsJeGT6IWmEgkyFKG/3IBmCjWYbVRxdZctwyB5wWktTPbrdBKn2UDgwoSuD074AS04Uuw10E6kLh2h1Jfz7LFk+6NByNxNugCq8u4PiXnkfg2KXUammmGigG6WfIijraadWArmufFuUod83VFML0I67yyrIbib5WSPwiGyawz9EbwN7wXXB0MS0Sk/d6Q6ewpwrTypJWkEvXHp7nwSxO4OalG1g1fX7IETQ3uKjLZA7ojQMxfScqb9kkwg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun 2025 03:00:58 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025 03:00:58 +0000 From: Alexandre Courbot Date: Sun, 01 Jun 2025 12:00:41 +0900 Subject: [PATCH 3/4] rust: alloc: implement `Borrow` and `BorrowMut` for `KBox` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250601-borrow_impls-v1-3-e1caeb428db4@nvidia.com> References: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TY4P286CA0005.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:26d::14) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: 501af6c6-fa34-45e1-cca8-08dda0b888aa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?L2hPSmp4WlpuNUVFTVlZRVFnZTYzTU80ajJzZWtTdWV1YmZ5ZHdaQitwTWlG?= =?utf-8?B?VlFjWXBzSDBPN2EwUXFwd3BnZXdLUmNYSFpDTlI1SkdNZ0Q0aDVyZjZGWmxh?= =?utf-8?B?UGVRa3cyVk9LYkRLU3VYd2hQbC9IWGpRbTdFOWNHSEUybHVidEhuck0yNEJo?= =?utf-8?B?VW83VHdPa2JGUEd6d05vMk9NeDJBVlcxOW5PeFNmYjdNam5GNFJSenphUlBj?= =?utf-8?B?YjYxT0tPTDltUzl2UWMxVmxNSGdwa0JTcUh2SUVqc2c3Y2JTR3FkYi9JV2ZF?= =?utf-8?B?VURHOHl1dUlHZ3lhWTB4b245bWlVQmZRQmwvdnhFRzhxWFI4ejlLbS8xUDlJ?= =?utf-8?B?MDJGWHQyUE1RN3BQWWRDVFg1YmV6cW9qaEZkTmljTnAycGNuOCszNHZneUky?= =?utf-8?B?cm1kSUZkTEZEMCtvaU5YTGo2YXl2SE1kRVNJcW9IamgrQ0o3ZHNjTE9tOUZm?= =?utf-8?B?RHBqUVUzRDU5dnEvU244TUNYNWlwL1IxNXlJejBjWXFvcVA2T250WHZtSUhx?= =?utf-8?B?dGwzYW5MNWswR09qb08zYkVvenZXaFlLUDFiaXRHZlBlT0VRS2RCbzJuME1h?= =?utf-8?B?cE9JdDVoeC94T05zSHhZZm1EQTl5WVVSdXVjZER2TUNLTTd0bHpqWkpSWHBq?= =?utf-8?B?UFA5Z3FGbVZ1MHQ0aVEydDJNRnFFaWxuMkVQN2MxMHkvSldBS1lRdEhLSDhI?= =?utf-8?B?K3VXL2lNYUJiemVaTEFTeVExeSt0dXJUdkc5YTE5K3UzcmNOZ2IrcERsSC9n?= =?utf-8?B?WmROSzJLZ01PbUp3N05jUnFrWHg4bDVzak9GMzQzMFNIanpIN1RSSTFrTkl4?= =?utf-8?B?ZUR5QVNHMG53M0YrcjduMW1RcklzRmdkWUE5bjhJSno1TnVyK3dWanRYUFZ1?= =?utf-8?B?eS9jRk8vUm9iYlhEVW1uYVFnaTl4NjRhSGRCK0U2Ym5JWHBONk1IS0RTeVRs?= =?utf-8?B?ZW9VU1ZKeWFYaUx1NUR3NzlkSnI1YVR1Y1hlUXFUSktEM2pNakF3d3JBWGhM?= =?utf-8?B?YnBEMVFjL2txVC9aNWpXZnRjamlLNURMYTZlRjFmUmJyTDVta0lXZnlKRjFn?= =?utf-8?B?aUUwM2RGY1hvSWVVRitGWUJxVjFmQnJlWGhLeFFsckFyZ1pkYmNBeFZhcU8v?= =?utf-8?B?alhKZ2ZYelR4WkhZKzduYXpZOGlzbVFBemcrVitUblBIR2lzTXFrME9VT0dW?= =?utf-8?B?amlBbHphVlNOZ3NjbVBuczh4cElma296a1gxdkxtNnBYVVpDeHNXa3J0aVZH?= =?utf-8?B?cVBhVmw4bnNRekMwV1krL3R6WC9GT0FEVTNWYjZhdy9laDNiWDJaci9lUE1Z?= =?utf-8?B?dWkyclYrZm83dFJ1ajZSWW5WSkRMUU1oSGVIczVQZU9GSGpyUGJqYWd0MGhU?= =?utf-8?B?Y0dCVm15clp3UUh4RWN4OVBhM2ZQN3N6dXQwUU12YnphQWt2TGJmdW9ycVlu?= =?utf-8?B?RHBhaDdhNk1SdUFXdkNSejlDeU5FT29WN0JaVWJoUStsZkVITnlTQVJuUUdK?= =?utf-8?B?Y0o3OWx6OTAwSmczbUd1NWlSTXhLdElvemNYU2RQRzFZZjY3ZmJlV2hHZmZR?= =?utf-8?B?bjVqdldoZmN5c29maFFOd3VBa3RjRlZncDB0aFZLMjZUbm5XbldNSG5NS09j?= =?utf-8?B?WTQvaG40SE05bnFIbUZwUWdhYjY4UTNLZG0zd0F3Ym5EaE1XMVFQQUhCdUwr?= =?utf-8?B?dy9rbTY1VFR2Y0xMNTU1YXFWS3hZUVdFWGlLR29CbGhCU2kxdm1PT2ptdzBr?= =?utf-8?B?cEtUNUVGWDhQR3NRTjFOYVZac3JOVUUzdUhaRzl3bXZhbU5iUlF5Rnp6emxj?= =?utf-8?B?a1E0UTB5K05xSkduZFQwYVhIUGRsQWFXZGozZWQrZEJzaThOaXZUa2paZUtj?= =?utf-8?B?aUFVNUlVdkMzbndGZ1FQWWMwNkxoSjA2TjJSVXpGVEVZKzVxaGNTc3lvcG0w?= =?utf-8?B?WHJ3TThXNmtBc3p2cXhsYVVpYnpRVHNVV09rYm92K1loVXZIaFdOZmlwTGdZ?= =?utf-8?B?SWhXblJIWEJBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UVNEbStzb3F4bGtmWEdoM2pjVE5ocVV0czdUVFRHZmdIUFdKOTlYajZGRE5T?= =?utf-8?B?Y0hhUk55TWpJaUVPN0NaZnNlbWlwc05mN3VzbTl0WnNPcXltNDNlaDlBZWJs?= =?utf-8?B?N3UrQ3I5Z1hGbVQxVVZiK3oxTXlKWjB3MVFiSmtESzlPdDdEbFNhb21IK2x5?= =?utf-8?B?eUtlYWcwMmNCYkloRnNDdUhjbEU2K1lNb0tia2VDRTRRZE5iMGFYYTJvdjN5?= =?utf-8?B?M3VRUFJJZDhQV2t5ZWQ3Zjh0d3czdU9abXBMZk5YYk8vWlVTRXAyRjFCUTBu?= =?utf-8?B?UnVtNGtNczZ5T3J6MERkdXBlNnV1Ymh5WGlUYW5mYUgzZ2RiaTcrUDQwQndm?= =?utf-8?B?TTBGbTh5Vmo1cDlIY1hGSzB4RUFSc3V6MU9WTDVFOU9jY1NPRG9mTVd6ZG5x?= =?utf-8?B?cHJWbWxwL25jbDM5QlFzRVVkbEd2dnpVS0U2ODJMQUIvZzJvVmdDQzI5dUxF?= =?utf-8?B?cG96aGcrWEQveExaM2pBQ3VaKzBhWVlnN3V1enJHZ21tRjluTUcrQUQ5TXVx?= =?utf-8?B?YU1LdnpDVmZPbk1HUllBUzZ0K0ZEbmE1R0xoa1ZxNkV0VXA4VklHWlEzUkFG?= =?utf-8?B?UUxUejUxYWZIN1U5ZjVxSGV6N2xuNkhUdkhJRndWaUJwWWdCTmoyeVlvZXVS?= =?utf-8?B?N3hGZ3dPc3E4NFF0L1BtMzZTekdhV3FhbVFHdXVZNExLazc2S1FTenRBcFNn?= =?utf-8?B?bDRhM1dSZktDeUNIdU03UXY3SVRNbWNnRGMvSW1RL0xDSGRucFltRWJyUUJD?= =?utf-8?B?MFN0UE5jaUtCY1Y1MSswVjFwNTJXUm1ydXZZaHNTSzd3elBxdUhGdFNSK1lk?= =?utf-8?B?SHVPbW1yRTd0ZXlKam80SFdVWkRvZFN1YnZrQU56S01UdCtUaDI3R2NEVFFz?= =?utf-8?B?UXpjMU1menVmZzljQTlIRU1CSGV4VjU0cUJWS0p4cXNKRDZFK3ZPNVYvRkV0?= =?utf-8?B?TmhtVmw5ak9JRkJZenplajV3TUUzbUpOM0hWRmREZ0MzdEpGaXZvdVBYNDZq?= =?utf-8?B?VTFHV3hDdTlBR1Facmo0WkFSR09lOHNVci8vRTF1R1JlMGhiVGtzVlJDYUZt?= =?utf-8?B?T0ZEdXFKOUJSem4vUklkVktwNVh5bGl5ZzhTTXdSalcvQkxUYkFVREwwa0l2?= =?utf-8?B?TTVDU2xaMWtXTDE4dEk1WGZISHBXbmM5azFEUnZ1QmxWZHdRQ0ZlTXNQNDdq?= =?utf-8?B?WE5DK2ltWlc3Z3F4UGF2alREQjdlUjJ2QVZuMEZWWUppRkdKaFZGdXQ5SkhX?= =?utf-8?B?YWswWnFHeWJIZkw2NTBuOTRBcUExd3lZVzN0b29COTFoVG50UkYrVW9OdG01?= =?utf-8?B?eTR6a09SS1dYWTRDT09vMUFCeHFwMGVEckRPQ29MK0tFZUVLVk50VkR3S1o4?= =?utf-8?B?d2IxdzVpNXd6RGd4MnM4U1ZRSExYa3IvTU43RFlyaThSZXlWdmFRTkZrNXU3?= =?utf-8?B?b2NMd1E3cG11TFZ6Yzdnc1pjVlAvMkRNNW5zZndDNDFSTVZVSUl4cjF0eGZ4?= =?utf-8?B?b3dMUWFvT044bW00ZXJYZFo1NGhBK2VOQmcreE82MytwTnNaUG53NDZkb2Nl?= =?utf-8?B?MEx5NmFqRFRMOUI5ZGxscEtHOHlsTDF0RE1EL2tUVzFObUd1WEVVVTkzYTQ5?= =?utf-8?B?dks4bStmTzZGQm5vcldRendncHhtQTlYaWg2TldpY2RvbVFUS1NrRjNNU2s4?= =?utf-8?B?dGVFSUEvWGdkd2I5ekl0U29jbUNERUhxV2pTYkI3NU43TEd6K0pQVDNmdXJv?= =?utf-8?B?aDQrMzdNT09MdTdtSzFRVUdhYkNVK0NySVlzRDAzUFpmbExlMXkxbGpBUUxR?= =?utf-8?B?QWlQdFN0QVM4NjVGMzBUS0hUajRLWEpHZWZzemRHMzVodklKd3FhVXRZZjFV?= =?utf-8?B?S0dFL0ViOFFpcWNUb01lMTVlUEwyUTJvSzFRZGdBMW03akYzQ3U3SHVRNXZq?= =?utf-8?B?OHNQZGxlb1U2SktvSHNJUUR5UlluTWRDbGZJWGQxNGtpdVp5bTM3aHg3cml2?= =?utf-8?B?c3BKSDM3TEU1NnF6ZzNhcHkrcStKOE15Ung1ODRYUUdZRDdoeDFkUXBLRTZz?= =?utf-8?B?V2N6VjBhMVlqZCt4UGVVcmJiVHZoWWxhdm9YMjRqcTZaWEU2N0NqRk9SYWJJ?= =?utf-8?B?dU1JbThuTVVaMEN2eTh0MWlZVWZ6dnNEd3JTTHllZTNYQmxNUVJ0ekZFVEcv?= =?utf-8?Q?foDcn5sJUdntJqiZKjsJoR7PbUtc/gh0EQ6LSlswhBSO?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 501af6c6-fa34-45e1-cca8-08dda0b888aa X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:58.4992 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: LTH0g1emfFxK29SzqwXjNepkAo28uqrgZyF9uQF9SkGzOiWhKW4yVBG3Vh0kJGv7cF1CRXkLe7Ek1GTKvGk9nA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Implement these two common traits, which allow generic types to store either an owned value or a reference to it, leveraging the `Deref` implementation. Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl --- rust/kernel/alloc/kbox.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs index c386ff771d506a2eb4c211a93ea9b59bc04c93f5..73e66b4118b723a5e54de53144e= 4c1884098342f 100644 --- a/rust/kernel/alloc/kbox.rs +++ b/rust/kernel/alloc/kbox.rs @@ -6,6 +6,7 @@ use super::allocator::{KVmalloc, Kmalloc, Vmalloc}; use super::{AllocError, Allocator, Flags}; use core::alloc::Layout; +use core::borrow::{Borrow, BorrowMut}; use core::fmt; use core::marker::PhantomData; use core::mem::ManuallyDrop; @@ -499,6 +500,26 @@ fn deref_mut(&mut self) -> &mut T { } } =20 +impl Borrow for Box +where + T: ?Sized, + A: Allocator, +{ + fn borrow(&self) -> &T { + self.deref() + } +} + +impl BorrowMut for Box +where + T: ?Sized, + A: Allocator, +{ + fn borrow_mut(&mut self) -> &mut T { + self.deref_mut() + } +} + impl fmt::Display for Box where T: ?Sized + fmt::Display, --=20 2.49.0 From nobody Mon Feb 9 00:25:46 2026 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2063.outbound.protection.outlook.com [40.107.237.63]) (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 5E21714B950; Sun, 1 Jun 2025 03:01:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746866; cv=fail; b=HCmPw3Zm1zv7jNTVCOIDNAed3oPYIbX7YwqSABSmpEiOxkpl1+bYLaGc0MN4q/1NM/8VKRDKnhnPJu0OExLcNT3NdAT2KCl2tpDZ1vHWY8fiJnhf5phcZ6dTG37rYlfaxbKEq/x2xGaPuPk+I9EVr5oLTI9wlAuUFuzLJIdPS84= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748746866; c=relaxed/simple; bh=atYGca4WvybiZGUuR54ZkFdPFgzPQV1pl+HqIVx8/00=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=syjcttBj8tqNZwqFmLYpuHt82T5PtdKrOt+ajTuynV7h5zQcG9zPKNTcRDOiyX9VZsJ4EtkiIS1KhpGMsc3gR2vfMTKFCBkQmq+htcYUybix+JanhbBTh/CaHe8XQZCIVrBJuUVVoP2F31msrKaq2W0pOIEI3xBIGfY1tjKH/h0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=VSLU95Xg; arc=fail smtp.client-ip=40.107.237.63 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="VSLU95Xg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gs6kXeW7nKYMNA/fDhu+Wk4AtO+oFI2+k8rfekE8mfMN0OarsKMUW3irVgKVJnkzx0897PSW0xL0bX74F9J29MjIX0+AqSzBtjBLtVgBBtXfaUFarqUawJPvqWOnPU0YOt9GyER/IGb3894x5T8qA0p6x+3o97nIn6KbMHdjDZeS2VguwLbFCaX01tNGHW94Zcrzn/VXZvHJGQoiHj/CRSzkEs5DDDhQDaQrSrUIxSi+Ev0RR78oVusv2c1Elo33i3VgbuwqG3nGFnFt56qc7/XHDICBaYrkv9Zs6BO7YjIqmc13w3qzYbPCegVBX/v0rTs3rD+nA/b9eExdrz0kUA== 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=qtiU4DmNIJAZf2vV0xQW+Sz+TzTm13t+z2ixi4GX3gc=; b=da3k9evurYzdWKqiOeIk+Lj41eE0nva9swqFf8nrcXqvPrj5vcGQmOQcRxDmiYJYBmkei8fci9znXr4T+StXdbUBiXpOR+4ogQIiXGQONN08BBtnX/hU/+17dpMOnENT5JIxdu5TORuX0JFwaPSf0uexOzisFUO1W2L+lgCGFF5MwNbPn1Ws84TIPT3HWNK6pnk3cD0A7BzDIHRljTv11jwzOjp+642eQAcEfGGeZcj5E3SKgx5zFTAf5OoAUcav+H7+L6hQlWO7yLUue7cHjDRNiDtuQVK1d/ME/qac5wI9FkNMhm5qKh8TcfJ1pDa/sUxmYtDlX7+fHyBsXwk2Kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qtiU4DmNIJAZf2vV0xQW+Sz+TzTm13t+z2ixi4GX3gc=; b=VSLU95Xgx1QXhqa4XZIrZO1rTr8KXNxkE0cTTGxVTWQ8H0RWUgzo+wMQUSODhvfDEHY6Mxan7JNLOafTgOqvjRWuZqNfVEFsnoe7XYB2kl+mVcEpdZHk7lZ2SuV/Jrsg/ihaJ3lhBuLpxk9pz8WLiPnbi9A485Cns1/3lCEajrNrCRb08FPonSF4VvMajw48NMTk44dzWBVlPDp4POcA49TAhyxIKFDxSwmdwrYSCjnsk6vid9WaXbeJfYl9HJDi2ZyfgvPP5jn386rry59vzHdVRvMLo6l7N6wGQs5rMIrwrs3RgJ63bwOaKVfy4Szfemjl78BrwgK9vS/oDc2/jQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun 2025 03:01:01 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025 03:01:01 +0000 From: Alexandre Courbot Date: Sun, 01 Jun 2025 12:00:42 +0900 Subject: [PATCH 4/4] rust: alloc: implement `Borrow` and `BorrowMut` for `CString` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250601-borrow_impls-v1-4-e1caeb428db4@nvidia.com> References: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP301CA0063.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7d::8) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: aa621abf-563e-46cc-0c76-08dda0b88a54 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cVRnRmFxN2ZyRjNsY0FaYkJraTMxc0ZzYkFUeWRhbkV4UHNiZ0doTUoxelc0?= =?utf-8?B?RkxiNTBXMExUWjdvN1p6N2xpczJOU3lFbk1uZHFiV0FHQXhkd1NxQ29zaGp6?= =?utf-8?B?Zy9odmEvNXo1Vm5ZTE5KMUY2elFKWVVTNnY5NDlTOExpdWZtWGN2ZmF1RHkz?= =?utf-8?B?amNaeWEza1FDUmNjcGpoNFEyL1RuNmswMVY2ZmRzNlF4TWFBdU5SVWRXejhI?= =?utf-8?B?bDlySjBmcGJrZ0FDNFFZQVZaUEpYWWNCYVoyQnBQU1Z6dUgxNUxLMnc1VFI4?= =?utf-8?B?TlFGMEw0cytYZURkempvWDkzSVljYjZNVEgvb0FXZ1kzbmR3d1UyeHRFeGt0?= =?utf-8?B?VEg0bVcxaEo5OW8vRCtzazVVWW1Sb1Q1ZlZjYUpLR0orUnU0TVZHa0VUdUxW?= =?utf-8?B?VGo1RFYvVC9MVUdIZ1NXRHB6QW5wem1JWVhJY0JSQm1Yck52WWdVK1hIMGhx?= =?utf-8?B?VjF5cGhBMVBqVmY5WVRzdGh2OXZ0TXdZREJmMXNzVWhzZzJjaTBhU3J1MWVt?= =?utf-8?B?eURZbUJjWWZENFFCSkQ4UU42WEU5bUdhZFhteDRwTW53MmhZRzlkUW5xRHI3?= =?utf-8?B?MWoyR3J5L0lzemMxYzlvdXl0TktSaE1WKzUwbmczeXF0ZlhLaVBtWElYczhT?= =?utf-8?B?Vnk5OTFhL0l1c3MrSFhuUkphdEFrYTJNMyt4NGlOOWNIMUVWd3ZzM0J2SVFK?= =?utf-8?B?dExscE8yTENsT0gxRU1nZE5ac0xDYWJvTWxwNTJIVjk2TkVieUgySCtySzN6?= =?utf-8?B?MWpuNjVRRHFZYXM5UjJCY25kTWpMUWpBU0MybHFSbXhLMWpRNFE4SHNsalh2?= =?utf-8?B?cFQ4V05ycmZjWjFXL01ZdnF6WkdjZGg2My84Q3FnbTBjekVUbHRMYVFBL3NU?= =?utf-8?B?dGs1MUU0T0w5c2pGWlppU3VXb0FkdWxrdzBNQTUvR09CZW41L1ROZzVLTVFr?= =?utf-8?B?QUx5bEQ3QkNMcnFnam03L05OTlhycjRjLzB2Z1NPZUo1eFVpNWRyblJRalFZ?= =?utf-8?B?MVVDaS9ubHVnMG5JVjRzOWRqbkdjbHN1MHFMOFN4VkNhNXU5TWtHelpFaTMx?= =?utf-8?B?TXNQNzhUUVNyV3YzczU0MnVqOUdKWmtwbzVJK2IyQnVjYUxHdjZCbngzdTZa?= =?utf-8?B?MXI4N2ZZVU95dzVESTRCTHVoSnI3UE1OZG5YZFhCTzA4Y3NCOFVjclBEblN3?= =?utf-8?B?T2FZTXdxV05DU0RqN2o2dVd1YjNBNy9yZkpFSy9XeUlvM1VIMnJSQlFoQkY0?= =?utf-8?B?TytuRjRoUDlzSWxna3RVdkJSSGlHMVl5TE9ISU9qbFJvUERLVGhzdTlLaDFG?= =?utf-8?B?VDcycUI5bXQ5VExGZzVIL1Q3MU9URllUUWkzOU1TUFdpU3EzNHg0R0N2NThS?= =?utf-8?B?NnlkeFcrTG1ENDIyN3pIWVE4TFRyWCs1WEU5ZTNlWnkvdXNLa295RWpRRjAw?= =?utf-8?B?N29HcThRaGs3RGRjYWJmU2h6eVdHcUhtVDJOWWJ1bFVlSWFsVUJiMWdKdTBi?= =?utf-8?B?TTN0bGt5aStPR2JheWhEc3RXMVUySTJrdzFWR1lSU0RFSTVxWEhvcXQzQ29W?= =?utf-8?B?bzlCbVREMWNQeTNSTjVOajA2UEhWYlpRVjVEKzFUamFmQVV4QTk2Zm4xMlU2?= =?utf-8?B?RE8xZUZXUDV3WHdNQndEWEZ2dXZ2a05kWFJScWpKZHgyM3RGQUxhWXgxTmVH?= =?utf-8?B?MzdUM282Z3E4WEJyTTdZNHVwck93TytycW5FeWoyeFd5KzNLL2hzZXhkQ3g1?= =?utf-8?B?TUw2aHY2aXA5YkVQM3RLZG0xUmtCOHJOejlFbnFubmRJTitIdXljVUR4Tkd4?= =?utf-8?B?QmJVRFBxbUdnZWxIQnhMbUdSNXJlK1hsVlpCOGlOSXN5M1JCMHpSV0x5c044?= =?utf-8?B?TFVXSlpIRXpkVDc1L1VLaFZZWE1QQnV1ZVhEeW9DeGU0b1crK1dRbmVRMmRn?= =?utf-8?B?bGY5ZU9uK0p0bVYxSmpEYThMYWc1RTJXSEJ5YklYNVBYMHhKeWVtYUhCSGZt?= =?utf-8?B?eTM2YlJOT0l3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Smx1cGJXd2cvTFYzb2w3anVjbzFRWkpwZ05vZEs1Z0F6NlVYMGxMZ0U3dUJy?= =?utf-8?B?ZzR0K3E2T3ZjWjRzSzR0MGl3RU9MUlNVTzFpdHdZeUVaYTk0ZmFjOUlhMjVW?= =?utf-8?B?L2JXRWFSZ1EvV2E0T2o4bTc2UjRlOFI4SSsxQmlocEpZYUNPc09rT21WcmVr?= =?utf-8?B?NXJXaG1XM0RoZXhvcWRqeGJYVlc1ZG5GR0ZtQUNOalE3U0x6MG5obm5BQStn?= =?utf-8?B?M0hjUWswYVR5UWVSTHpPSzhIVUZqdjBadkh0N0Z0T0VybXF2UnRxZUF4L0Q4?= =?utf-8?B?R2g4NEVrSy9DeXU1MDBjRitwanIvNURPdjZ3c3h5Zk1saWlSaUlZcXQwdXdX?= =?utf-8?B?NjVGRHFOOCtuaEtDdHJwK2laMXloRUJOdkNxcnRxWFdSdUF0RGoyZjVNb3lO?= =?utf-8?B?eGdqcjhXWFE1WVBOR3lmOGI0QnZ4bWRHSmtEUnNrQWxpalZoc2p6VGsyUXRz?= =?utf-8?B?NnNEWmxvVkpscWYzVXNBVzBxWXFmZnk1Y2NXSEJnU0J6UmtKdUJjMGFTSTRz?= =?utf-8?B?MUFCSmM2L2N3eUhpODB1QXd6eHV3aTYzMnRmdHlEK3Z6by9GOHd1MHVIR3pV?= =?utf-8?B?Q1dSZkJpcHhwUFlpR3J0aElFRlFJbFErSW43ZFR6a0NOM0Y4cUNaczRieUls?= =?utf-8?B?K3dBeWpEazI5RjhqYjY4allrRE1Qa2tyWUlCOHB0Qjl5M21iNzVUU1V4REVQ?= =?utf-8?B?N0ZNSEpEdm92TGJMdEJjS2NselFaZFBIZ2t2NHNWa2poSEZzMmlzMHRudVNs?= =?utf-8?B?NTA3VFdHM2dDQTFQYXhscnY3RndCdXBQOXo4NWRnUTN0c1dkZzhhdHRSUmM0?= =?utf-8?B?a3RxQXdtMnE2Sy9vWFcwV2N4WnNTeEplNit0dEhSRUFlc1ZDNm5VTFREZDJX?= =?utf-8?B?UXdxTHg3NFEyMDBzVHZWRktmMDh2ZWlMWktkNGptUXBHNUp1aWduM1lqR1Yv?= =?utf-8?B?Uzd6ZzRJckVKYTZ6WllPUmpJWk5vYWVGSjNiS29ESC9reHFQL2tMQWxZWE5D?= =?utf-8?B?OTE0UGhSOVpvbUZsWWFzd3NEM2h0akV0enpyWHVGSER2ZmFjOFErRnNYemF6?= =?utf-8?B?ZkFuc0FPR1laZjhMUEl0c2dHdkxuSHpkVHNqNmFnY2xNeGZhdXhISFVhU0lF?= =?utf-8?B?OXhtdTZ4dDFSc3plRU1JNncwQVVEOXNKREZWd0xxYjhsM3hkeEF6WUMxME50?= =?utf-8?B?MUhHZFRUYStRWjJ5VUxWL3VIVnRhYXJBNTBXbG01R1JuUDlkWUp6eUlrYmFJ?= =?utf-8?B?TXJsQVo3VE85YUxIenQzbnJvNDFOWExjUHVWRlAvMHY2V0xaTUQyWlJiK0lW?= =?utf-8?B?anNnTS9ocTRmS3lYbmNBUk56RTNXUE1CcXlMSFlqaytObExHdG4ybXJadmd3?= =?utf-8?B?RTIwV2FKdWJja3NoQ1FsWkdVYXhsd1ZibFduMEROODBTK0dlV1VDVGF6ZU9R?= =?utf-8?B?Njk5T2prZXNqSnR2dGtqaHlrWFVQKzF5QVh5TzJlOHkzM2xHeUNqR0dyOW1Z?= =?utf-8?B?ZStSMWdwUFYxZU5jcWQ5K2NpK2hEWFFpSVdsektTRFZVT0VIQzdQY0JsSEdS?= =?utf-8?B?Z2NQdmF0QlBxYWpuZ1B3OVg4QXY3TXk2T3F4dUhZdkNReEllQlJhMDJ3M2R4?= =?utf-8?B?WUp1OW9TVFRDR2VjdnRVMWZ3TlY3M2JSeGdZQ1V1SmQyYzBqSzVPbU94d0NT?= =?utf-8?B?V1kxODUwTFVGajVrbFhhbEg4WDdtYUpDWXE5Z1JOZ05lb21iUlVuY0Uwa3lq?= =?utf-8?B?cEhNZVlzajQxdE9HMVVmd1d0bXpMQU5lTlVibVg0T2tERzBPM3FUZy9zSTZ5?= =?utf-8?B?L2JHR3NWRmI1Mm41OEtjUStJdGJBVXdJZXRubjdLbk42OW1hVlUwV2VmQ0xY?= =?utf-8?B?M3pWWWhpTlp4VmFYeXZQSDMvWmRuMTdDWHdXejZsQ3VWb1k2WnlXZnlsUi9Q?= =?utf-8?B?UjFQaW9mTW9oWVFmK3o1V1V1YnJjOWdmSkk3b0h6S04yWnFqODRjMGp3VTZ4?= =?utf-8?B?dTJpRUhZSmROUjNlR2M3eWllNG15RWJMM0ozb3Z2eXJMbXpZZGJwVVg2R2Nt?= =?utf-8?B?TWRaRWttV1BNTVRFZnFNNlpvaTEyd1IxTGpkTWZEWWt3T0FKa2FTRm9QSmsw?= =?utf-8?B?bGxFRU8vaXF2TkZqRUxSRUplYkc0VTVGamVRdVRiVWlVOXZsTkR3TFc1M2pv?= =?utf-8?Q?n9l3Lr+rHPPrk4bgncaQ82QlHEee6KLaQKwXuchjXl5N?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa621abf-563e-46cc-0c76-08dda0b88a54 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:01:01.2773 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Poyo7KPMHTxKqoHh3nPZBopk/nPujSbD44O7+KpzCDWJ8c7mXBfaTs2eqBPscRtaG86EKFm5ejFAvJaXsU+tkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Implement these two common traits, which allow generic types to store either an owned value or a reference to it, leveraging the `Deref` implementation. Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl --- rust/kernel/str.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs index a927db8e079c3597860880947a03959e1d6d712e..f5da512ebcfef6c8d5227e8177a= e32f6194ecffb 100644 --- a/rust/kernel/str.rs +++ b/rust/kernel/str.rs @@ -3,6 +3,7 @@ //! String representations. =20 use crate::alloc::{flags::*, AllocError, KVec}; +use core::borrow::{Borrow, BorrowMut}; use core::fmt::{self, Write}; use core::ops::{self, Deref, DerefMut, Index}; =20 @@ -911,6 +912,18 @@ fn deref_mut(&mut self) -> &mut Self::Target { } } =20 +impl Borrow for CString { + fn borrow(&self) -> &CStr { + self.deref() + } +} + +impl BorrowMut for CString { + fn borrow_mut(&mut self) -> &mut CStr { + self.deref_mut() + } +} + impl<'a> TryFrom<&'a CStr> for CString { type Error =3D AllocError; =20 --=20 2.49.0