From nobody Sun Oct 5 14:38:34 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2050.outbound.protection.outlook.com [40.107.236.50]) (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 E2C15256C71; Fri, 1 Aug 2025 13:24:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754054666; cv=fail; b=VbjjbQgvCDRkhImB3CbJm7xvfUirEcIcRpH4DjsOlcUBzkhKZyGMeUFNJD6OHRmhIvrwNKXm28mac+U+lx701QHwZQ/Lty7h2zJ7F4zMmn9XiWdv6kJG47JpAehEL2iAy/nw7JI8NHW1SURJbFQ/NDYL0Z6ZYAwAGGPo+GO2Vj4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754054666; c=relaxed/simple; bh=hWtrGPMV+OExqxe5/ljRsNaFlCnDFxpAOfz5ZCX3eXM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=HtCbgAa2p8oZxt38mcRj0N5Yq9x2F5cI6GEClUO/jrCJ/Ak3RWjg3pCxDtd1E1eQRMq8Syoh9HMDEo1iWYhvO2L/JWUiNUUOvg8+qpYmJCpwbs0AGY6P5e9gekmtozqtbiVNeNVxRwwbebQypzJGIQgVddWlBj16QrttP2dd/ws= 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=U5VzhVrQ; arc=fail smtp.client-ip=40.107.236.50 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="U5VzhVrQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W8ZwcyZHghv8U2blLpp4c/uRtaowP1tD4EcIhemthnnOi0YdlGphnuKJmAHbpa4Fdqs/kunn1sR8ueEMxMDqpyAFttffAdi6G6CGsQcb/j21sp53JRu8eBrx+gFqWYEn9HGe4VijGj0ZnYiUICIIj9wVY3ouG72t3PWyQDEvHZIYc5iVrgE1oZCBTJ5/uFSVjQmN//zujV0PsEgAcOgLKhl132uZSmcqSTMLwW9q/4LDRozSKUeOx/atUbCwBMnhtUTLb8nGZKdMZKqPDw7tuCHZclWpBckctB2S565R7e4n4LpjXGrAjOCxI3WnPDH4f11U12NQqgeBwXlj99MX0w== 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=Es7PRYYg9kDPqP2lOPXtYzDo0hNbLQidAQorYkDemso=; b=ESK4KFtLeOOEL5BasmWBBP71l4c8OwwUj3w3KG3mIStjT/QTvYb1DzlgPJBzHCJjElF8x7NaLk9UGgw5coW6x+Qqgk+Tk/gxnwJI2bNlIqH9Pfq0pYj1sSsrLRSCkYT6bMzx2DrIfOHDdAQhidIi0iPqQkvVTgY0xz+LOT5R59Gu6/ikWWFd/BJ2vKGZlQ1RfDsThf8MGoiB/x4ICm22KG0+kqhrAlcbUv20vZYn/Y6m5R9A/kELXS+H7h98UyFDp+UDb9RYUhb9oqRH/e2gOQrfDHLQOj2WpY1IanF59M/j0/P1s9LGuqhSaYPCT4mWtHCBns3QXWifN9ZnQrSXpA== 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=Es7PRYYg9kDPqP2lOPXtYzDo0hNbLQidAQorYkDemso=; b=U5VzhVrQ3mgK7JqSf8m9todowa4VD3NqdIJuXn9RlV9DzpnmpavXAlR2ReYvGKBtLTTlDIG0SK8iFGMXptt/Ki8tdVfiPNNi6f4BlakQPOjD1PleZn2zaNLg/OLuaVJ188/CI5DNmmQxuZ8TtecxUiCefcIv8gPNRzIq0twhk4DjXCiJBV3k5R5cc5PCqG+7FoT1J7Zav2ipt7WYAPmFQFKxn5KRblJsd2RWMXXp7oUQhrfTfLO38z9Y5Py+WmyKmYUx3bCoNSlZXSzwkwTX6Jtz9u+CKP/7VH6FCGePgUUYClx7ET0FGo5kvtZVIUvjQNehVH+9JDTmPfwmGjMy/A== 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 PH0PR12MB8007.namprd12.prod.outlook.com (2603:10b6:510:28e::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.11; Fri, 1 Aug 2025 13:24:21 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8964.026; Fri, 1 Aug 2025 13:24:21 +0000 From: Alexandre Courbot Date: Fri, 01 Aug 2025 22:24:09 +0900 Subject: [PATCH v5 1/2] rust: transmute: add `as_bytes` method for `AsBytes` trait Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250801-as_bytes-v5-1-975f87d5dc85@nvidia.com> References: <20250801-as_bytes-v5-0-975f87d5dc85@nvidia.com> In-Reply-To: <20250801-as_bytes-v5-0-975f87d5dc85@nvidia.com> To: Abdiel Janulgue , Danilo Krummrich , Daniel Almeida , Robin Murphy , Andreas Hindborg , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Alice Ryhl , Trevor Gross Cc: "Christian S. Lima" , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: OSTP286CA0110.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:225::11) 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_|PH0PR12MB8007:EE_ X-MS-Office365-Filtering-Correlation-Id: 10bd6401-fac2-4079-f8a2-08ddd0feb9d5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dG9GeHlJWG9JNDBpSTlEckl6b1hDZFlsQ3VKN3hUbGlHVU11UkJlVHZQS1B1?= =?utf-8?B?RVFUZUhrWm5WWHovdlRJaldPZStyUHZtL2sxK1gzQlRBVjBzOW4rbUphNEpG?= =?utf-8?B?TzF0NlgrcXh6Yk10OXdDWDRLaGQxUlhFSzZwajVwVEZJUytiNXQ5Qkp4UUEx?= =?utf-8?B?WFVqR3NMR282WUpIVU5TYk5ERFJqZHRrQk1RZkVCT3dSVFBRclVlMTI1VlFq?= =?utf-8?B?K3U5Tlk1d1F3QlNkcXNPOTFaZEI3U0pIT3BxS29aeUFjOU1PMk9lR0g2L3Zp?= =?utf-8?B?c2ppTWt1YnFBRGVpRkJRbHNkQjVUZmNNaFhIOWtLUzN1R0d2UFh3M3JnR2xu?= =?utf-8?B?emV6MmljY1lUU3NmS01sU1ZJWFd0eEVOZ1dRV2dvQ1dTTjJhNGVxVVkrSWxa?= =?utf-8?B?SENCV252VzhzY0xTeWNGMkliZVJoZ2prUWpOYmlsL01jZENkRWZhUjM0aGEz?= =?utf-8?B?Mm03QURhZEV6MkUrR21ZeTdkU09vajZUK1ZhY2Z5bnh4aEJta2pZSzg2TjZP?= =?utf-8?B?OTRudHZsandlNGZQU3kySTQ2eUZyT2pFVUI2MnUrQUlxbDdOTGJYdmg3YVll?= =?utf-8?B?bWV2TEJrbW55Q1NtcDR3WlhhVG1TeVRpSklyb3lQNnVRSlNwTENRVFVFdVZ3?= =?utf-8?B?dkt1b0U5cFlUd3lRN2lrRmRUemM2RWgvVFpmMW5DSTZYc3VQZi9mUzBQeitH?= =?utf-8?B?VG56SVByQUpvYTQ5Z1p4TWVnbnRQMENPMnVBaWlMQVkwMUpQN1IzOFVHcHd3?= =?utf-8?B?TGFNVkV5eEM1RmRDc0p1TC8xZGxWOVRSdUJoMmZkdmdBQkdockwraUxFMmtF?= =?utf-8?B?ZXZsQndYQ09JVVZFU0kvWTRLQWFKdlRvQ0V1VVlxMFFUdGFBdkM5N01KWTlx?= =?utf-8?B?bFhTMnNQakpzZ0JIMDJ5UzRlUjJ5N2RwS095cU5YZHJkSFNLTXFBZEdST1hM?= =?utf-8?B?V3V1ci9oVXhXTll3MHFINXpUdkxuSFdhaUNGUS92OG9yaTNVTGhZRmVDdU0v?= =?utf-8?B?dERIbGpUMThIMGVKRnlady9RZjVRNmRIU1dIWXZ6ZFFSVDdwUUl5NkozYkU4?= =?utf-8?B?ZzJYc20wU2NvMkdvbTRNd1lHZU5ldE14bStsVVMzMndmN20weGZJRzZWWFc3?= =?utf-8?B?LzJobzZKcmRpdDEzNWgyQTYxWXhYRDRZSi9MTk1ZbjJYcDBGQ2RqTTdZa3Q3?= =?utf-8?B?a1htUVFtWDBmMUY5eWNHc2I2MDU3MzYrNFY4QTh3UlBua1ZYMWhPK05GQVdy?= =?utf-8?B?QXdzQmlLMGtteDdhSENFTmsxSlJVOW9yNWtDSXNzM29pd1c2VWtpalRXeTFN?= =?utf-8?B?RmhLd0lZY3V0MTRRVWVBanIrWk95Y3BJcit1d2RHdjVmTTFCd1llaVFOM1Rt?= =?utf-8?B?dUROZUhxZmlnVEhUZEUvOC9PSU04MkdhdkpESlBnbTdWRXpybGhwVjluazVy?= =?utf-8?B?dzk0SDl2SzdJMm4yN0wyeWg1Q01LNHlISVVOR2w5TzZORVpZQjZHOGpmV3F4?= =?utf-8?B?UjBnV2hkN2tpNVJMdS83alhmL3IvMHViWVJpSmt2Y21yUUYwRjl5UFd1VjRU?= =?utf-8?B?Zk1UR0tZekVuV1BiMmMzR0lqTEgwS2NEZ3Y0SlFTVjFrekdBSnVzNUlGeW1x?= =?utf-8?B?Y25JQzVWTkFXK0dsSHVsYVdTTHNiejQ1WHM1R005WHRuRzkwa3JKaGhIcS92?= =?utf-8?B?S2JjK29HNUxFMTRWbzJydFJpUnhEWFY5YjlRSEszQzg5MWJ4WGxLeXhLUnR3?= =?utf-8?B?UWQ5ODNaUEZiN25sWE5Rang5UFZRRWlHQ0JFdFNDcE1mN1d4d3FITVYvTnFO?= =?utf-8?B?d0sxNGF3ZXRtbFZJOUNwRXcwYlM0MzRDdEJ4dEY1L2pQVnRXV25lcmFHek9K?= =?utf-8?B?NWxqT3Q4QWxSTjNEVjJTdHM5SjJFZlRCMUYzNFR2NFBnWnd6UzI5Wm8wY1Vu?= =?utf-8?B?YktrNG9aUjFYTG9Dc0NwcmhkQWNPN0tRbEg2ai9hUWxrU2FycWJFQndpazBV?= =?utf-8?B?SHBBRXI3QnBBPT0=?= 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)(10070799003)(1800799024)(366016)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MmFCeVArd1NwWHEzS21RVzhDbDB0S0pMaGN0Z3E3QndKOUM0V0JhVGdPaHVT?= =?utf-8?B?S0wvenlvczh3bTl2RVVJZXlvRDhKa1RXTVRDbE5mVXhIMnNKdkJRK1pzKy8r?= =?utf-8?B?ZVZIYkVsS01tOGEvM2tYSTNGd2szVVZ5RHNzdU1TSlBmbVhXZjNVaGRXVFVt?= =?utf-8?B?S1Q1c2o4aWl1dEtJenBsTStnK2YxYi85U05DdnlkSWFyVmpDbXdCU3pPa3ZJ?= =?utf-8?B?azhTb1JydjkrRGlUR1d4UmdJVkVOQ1VmZU1CbDVPejhDbmlkcnVIblpjc20z?= =?utf-8?B?UjU0T25JREs5VVZPMWtOMWFodXRCU0FCMTk5a3BsNkd4bVUwUFFaaWpHVHZT?= =?utf-8?B?SWlhYlo0cU82eGxmSllEZ2JVZVM0SjBLbENLVFc1VDBNalUyL21HdldST3lq?= =?utf-8?B?UEk0NCtsRXFNbFpXcENVR2Q0NjN2R0hjbzIwVFBvV1Jtb0hoQ2Vkd2xpeTVW?= =?utf-8?B?aGlBTWtvaytjSkpPM1cyZVdjcWJRZVVtL2JvVXVOZU5naE9vV3ZXVXNpbFo1?= =?utf-8?B?OUFkYlJIOHBHTGt6MEU2SE9KTlJoUkd3M05BeHZ3MFZWOXZSeWlBUDBKbEt0?= =?utf-8?B?QVZtMjRhOXREV0hLMGJ5b2ZRblMwTlY1c0g5aU9UNUNjTHl0ZUxjTEpiWStx?= =?utf-8?B?dTFxdFZ4YVBleU1lWW4yNS9WaHhIYTVoNGJYd25CREVhTi9YSFE2U29iY3ox?= =?utf-8?B?cGg3dDlMZnZWMG5tTnVzcUNOVVBWSHBUYVVtcHNXZGFtNWQyVHlzZUlTVnMv?= =?utf-8?B?dWE2SmZmRXFjWDdCaEI2ZGNYVEF4L1FYeHN4bWxNS2pLRHZIMmp4TjdPTFRE?= =?utf-8?B?eDc1cVpwOWhFcktBNzgzSW12aGJON2RJZGtZeXVlcjhlYXFzYjhxNUhiZlpT?= =?utf-8?B?VkNIQ2dDMm1VWUxiT29DN0pkWjM4K3YrUy9WQ1ZUaDhhb3l3NFZmSVhDRlo2?= =?utf-8?B?dEpacUE2eksyS3IrZVJEV01VNUpDMUtmQnpQZDUzZjVKY1NDaEFhNDMreGtw?= =?utf-8?B?MWQ1NCtPNnlVVVEvcVp1OW1qdmtES3MxME5RbWFPcTU1SFkrdG5MYzc1Smd5?= =?utf-8?B?K0dsMkJDUXFjR1c2Q1RSSUVYbFJYWG0wWjluT01xd0ZReGQ0VHdpNjE4L0xE?= =?utf-8?B?dndoWWxFTXZzVE4rNHhQZFJRRDVvVm1NUmRrcjhyVW45S2h2Rk96LzA1ekFa?= =?utf-8?B?QVNpTmhsaUpwRUZ3ZjNKeDZqZVUrczY0ZXdBd3lmOWg1S3lPaURZdGU2SHNl?= =?utf-8?B?UWVQTmVjbXBKbjYwVTdqWWgxQ0l4SUFWWjc0c1dWNVoxdnI0UVp5TlVYbXJW?= =?utf-8?B?aUwxVUV4anFwaThkUiswQ1J5NlYwa0dYdE1tcWh4SGRvS3FuVXlXOGhjc2U5?= =?utf-8?B?ejNlT1l1UDJsK0N3ZWIyRFhQeXRQZVhCN1Z6cXFOWXFJQXBBOG5LamZhb1lq?= =?utf-8?B?OExFUGlVN25DaTZjcENTVUlCZ1FDUFF1WExENmljSDFEWWFidVJMOXUzSlJl?= =?utf-8?B?QWdGRElRazNyS002MVRHMmVDbXhDNjkyVDFjN3dCUno4V05PcVdpOUVjTGEy?= =?utf-8?B?MHptQW0zU0NCdGJsRUo5b2g1cWlybGtKSTZRdmxUbDZrUm9WVmh0MWJxbVcy?= =?utf-8?B?WE41Vi9CVFNGVXZWYnFhTjlYNTFmSzZsdFFpSVN2VEhFQ2hyN2JqK2FnbDB3?= =?utf-8?B?VU1kOEJPKzczc3ZJbjNxVjdJMEZSd00rUGdwcENRKzc2QWZhdlNwNW1Nb0Zw?= =?utf-8?B?d25tY2M0N1FIbFVnTVNFS0J6bnkwNXhKMkZPVHVoRm1yMFBIN00vTVV0VnB3?= =?utf-8?B?aFBCSFVsclBkVWp4US93Y1pWTVBNbmkwZ3VzTFkxaFBhZ2xmK1RWQVEzVW40?= =?utf-8?B?ZVZQVlcrVi84VnNDZmJXd2s5ejFTdVhqMm1qT0JDaGQyRHh3NkpIRVdLUCti?= =?utf-8?B?aUF6OHhtNnd6ekF3Y0NLaFZUbWZqdjZ3OXZHNmlqSVcwNFJDRXBvNTFOeDkx?= =?utf-8?B?STI0OWhyeTlOWHQ1U3YrZVR4eXVacDBGMHJwWXo0RFVCRTdrT2tVU1R1WE1Z?= =?utf-8?B?NXhsNHJaVEJKaUJaWW9pSEQ2am5BRzNHSXl3cGtaanRPdURDcEUwWmlQWG1M?= =?utf-8?B?Sm5FUlM2WTVJQ3NxaDcwaW83dmE1dkRxWjY3MnpCNlcxUXZKOHpGdXl1eTlO?= =?utf-8?Q?1VOdwEEyoS80s2vrK192c43eILVNL2I9phhbZ/E42wAR?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10bd6401-fac2-4079-f8a2-08ddd0feb9d5 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2025 13:24:21.5889 (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: twJrpmtD87J+DZK3YkaTuWO7GChDzgDo11EW4vGDUTMBppuUP8nraFMw7vqU9c4FjzrFb7r9JkwscYguFLHbtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8007 Every type that implements `AsBytes` should be able to provide its byte representation. Introduce the `as_bytes` method that returns the implementer as a stream of bytes, and provide a default implementation that should be suitable for any type that satisfies `AsBytes`'s safety requirements. Reviewed-by: Danilo Krummrich Reviewed-by: Benno Lossin Reviewed-by: Alice Ryhl Reviewed-by: Gary Guo Signed-off-by: Alexandre Courbot Acked-by: Miguel Ojeda --- rust/kernel/transmute.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/rust/kernel/transmute.rs b/rust/kernel/transmute.rs index 1c7d43771a37b90150de86699f114a2ffb84db91..08e6f0ff92a563e90895efa31f3= 1f887aa05a0ae 100644 --- a/rust/kernel/transmute.rs +++ b/rust/kernel/transmute.rs @@ -47,7 +47,17 @@ macro_rules! impl_frombytes { /// /// Values of this type may not contain any uninitialized bytes. This type= must not have interior /// mutability. -pub unsafe trait AsBytes {} +pub unsafe trait AsBytes { + /// Returns `self` as a slice of bytes. + fn as_bytes(&self) -> &[u8] { + // CAST: `Self` implements `AsBytes` thus all bytes of `self` are = initialized. + let data =3D core::ptr::from_ref(self).cast::(); + let len =3D size_of_val(self); + + // SAFETY: `data` is non-null and valid for reads of `len * sizeof= ::()` bytes. + unsafe { core::slice::from_raw_parts(data, len) } + } +} =20 macro_rules! impl_asbytes { ($($({$($generics:tt)*})? $t:ty, )*) =3D> { --=20 2.50.1 From nobody Sun Oct 5 14:38:34 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2048.outbound.protection.outlook.com [40.107.220.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 F141025A2BF; Fri, 1 Aug 2025 13:24:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754054670; cv=fail; b=WkNWrcAhgE1kclgXnNjv4hC9+EtRDcgB2pJ4grMoV50oIszYAFBIQnQ4YbULV4lCjbYagJvVIVzgZ99nmL0FbXjqul2ldBxmHr6MbzyLzlSGqIvtglY4qGl0hLJa/bPVoNuec0lEXsOuc4IGNursvH6rvLQ+6+hfugQqSjcqsiM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754054670; c=relaxed/simple; bh=Ek7FUvkliq1YL+9oWR4B5tQwrhCPtCoZhJyYDQ7VGZM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=aRN0L9/SF80YiLbZwy65V78/rIR5F/DL9AWKjxUUbjOcx7Ji5v/z7LpMRE2BJ027YifPgECZel38Y02hEo8RzO9WYx0AvD6boMVbPg90OlFCxyn92vX+pL4u/HYwkZiST9MIXunHg+MuuY39avvsuf2IJax9dhhqnkZTvkIflDE= 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=n3QZUoOU; arc=fail smtp.client-ip=40.107.220.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="n3QZUoOU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AShSrvbhvvmparqIj/926p3/MKUaEKrcM2p/BThcHqMLXHcX+O6bak/q4Ue0IkUvjrZWaG/HdPHUc/dF/hTfe1zJ46FI/oft4JEeytCeKLkKRIdKQD6KTR/1vqDtXU6dyZpW7i5fJDOqFkdEx8hgbs+9H0ygx2vXgSqj+nZRjYEbMN9r7qNSb4DYLVn5cjZy9HtUWab8sJ47ZXFR50InvQEPSG0jSh2eWb5u5GMSm39NDpN4MaM9GA+swFiG7JsvSivJvUjvWkUZGgWspB0ddNsz8DlKTJAvAA6y4GQNQFrT3I4B7cFdH9FwYZ9JNPzK4hm/KNvhmT5+DtlcfUP6Ww== 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=FBSos1er9Rnbz88IdFYlF3xgFRJTStVA+t1MU5kxOFU=; b=FhLnk5K3L1FtFQV5wfvyqcpfd8FJ47tEeAuBwR2C/o3n16Upmgz/5gFKhOWBF2LKnQfZdmhA6VEMxokFsi8F47WLyuikdMLTfyfdEBTQYWwIaCa2bv748x9qPwehD/XciqaGgMs0vhpGCPcH9Dvw3voHglbliBuhZHby54zu9g7WTPy4CJHkABZRUVrHWbwTeLNzpl8HlQUvUOQ9twM+SwftiSrqOrIF2gDJOw2qS0AET/mD24bOxpzJ3bDNLk16zaevbjE3hMdpcf06y0Xa50FSzTr6sj0UYx64gAFZpnlZJ/sGs5DJI50OehDBHRL2tbRF5rr/d+vuy2L1nF/+IA== 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=FBSos1er9Rnbz88IdFYlF3xgFRJTStVA+t1MU5kxOFU=; b=n3QZUoOUqSpt57t41IcdWLUxZ8F4PQokzuF+qPHz1F7JYluvioxf0pCoP0OCZdcYAaI5D0G74c4Uc0VyIbAEcxsahQSc/qKpbBr+rGyix+eXRfKASFfJlxJWNBGYbHElVxP1EWSEdE4e3ZUSReBlCNmGMBLkNV9i1/mxT16Db/6r2ryMg029o9X9OTsfCL1amOzBMgl0zp2XzmWIBAI/oReLactmmNR7WFqIhA2QsJ7vbMD+25V8TOjOR5/JgJvxf/Y/bIn7j5Av6wLEsjAEyW5houfZaA1guwiFQVFB0cqPqZXRPmmZoE8wnX+AawcM2Lp+gV79bTeeKaAiKT5Ygw== 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 PH0PR12MB8007.namprd12.prod.outlook.com (2603:10b6:510:28e::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.11; Fri, 1 Aug 2025 13:24:25 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8964.026; Fri, 1 Aug 2025 13:24:25 +0000 From: Alexandre Courbot Date: Fri, 01 Aug 2025 22:24:10 +0900 Subject: [PATCH v5 2/2] rust: transmute: add `as_bytes_mut` method to `AsBytes` trait Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250801-as_bytes-v5-2-975f87d5dc85@nvidia.com> References: <20250801-as_bytes-v5-0-975f87d5dc85@nvidia.com> In-Reply-To: <20250801-as_bytes-v5-0-975f87d5dc85@nvidia.com> To: Abdiel Janulgue , Danilo Krummrich , Daniel Almeida , Robin Murphy , Andreas Hindborg , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Alice Ryhl , Trevor Gross Cc: "Christian S. Lima" , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: OS0P286CA0119.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:169::15) 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_|PH0PR12MB8007:EE_ X-MS-Office365-Filtering-Correlation-Id: eb9559f4-b857-4d88-5244-08ddd0febc54 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Uk55QUYrUUpzWkpSZTJiclRKTis4YlVZMC9nVCtQQ0ZFOVdFVVovQ3dyNUxF?= =?utf-8?B?UFE4bGI5bXlNaCtTYTMxcWxMbU9HRkFnWis1cTJuWXpiTWlxS2kreU0vQUI1?= =?utf-8?B?YkdDV1czRjFNU0d3cjVlUGhma1RiRCtnMmZ2L2RlZXEvNDBxOGhRQ21lbm5v?= =?utf-8?B?MTJ2MitGZzNYU09VTTRZVEF3aGpVTnNKRWVUSCtmSERWTUlEZFdJamlpK3dT?= =?utf-8?B?Q1g3b0xqSU9Lc09jU3NFcHgxVE16VCtwUTliazVnVi93VXZXS0M1am1TKzU0?= =?utf-8?B?Q24yTXhxaGl2OVVycHV6a1lXUVgwczdyS0F5bjBCUHdUMmFxUnZTbHBsOEJu?= =?utf-8?B?d2IrVFRxZlFFZ1RobkNvN3Q0RkNLLzNFZDFPWW15WkFzUWJLRHBHdXA4Zk5l?= =?utf-8?B?SkVTRUgwRFc0ZVRWRkszWWZvSFg0OGNPVXpmdW05TndqQXNkQjMyNlhrN3hi?= =?utf-8?B?QlBGdVpJNlVsUEhTT1FucFlwa0hqNkgwb2RVTzd1aTBCYUZ5MmkwWlgrMVJ5?= =?utf-8?B?MmFpTkJGRW5vSjlCUXVJZlpzb0R1UVRWbHBPNkZaWDhhVXI4Q2F3cmFtZ2c3?= =?utf-8?B?SEl4YjdlelZrZ25ySWU2WXR3SGU1OWdQMG5XY0tTZThFUDVPTFhYNWVsREp1?= =?utf-8?B?WG01ZlZWbnpkLzNCckI3cTRLQXpHN2h3ODQ2OHh0UjNBY2pTNEJpWTlJNkJJ?= =?utf-8?B?S0NYS21LSjBNdTg3RnlpRVlobElVYXp1SnU5UHZjelpPR2J0Tm9qb3BwV2lY?= =?utf-8?B?Q2tHT2xSMlVLcmtwWlJiL2psUi9lNlJ1Nk1ZaDEzTUhwNmdRS3RIMFRjd0Vs?= =?utf-8?B?RTErU0pORlk2c2o1RDlHYWFqbW9qbWpPNkJmdVVONlk5Ly96UVl2TkY0Q2N5?= =?utf-8?B?UHdpYm44WTdHMzNPRXo2WWNCK0NMeHYwVlJFNHBzdjFKeVFNWVpLTjZyVXlU?= =?utf-8?B?MTNYaTQrY0dpZktxSXR5dTN4aG5IOWxGWmNJRGVHSkEyR3dXczkrMkFzcmpn?= =?utf-8?B?UFVyWlIzNkVHck5LM0hRVkpjbTdXL2dZejFXLzFaWXRuM0ozcjUzcEVLZEx2?= =?utf-8?B?SjJsZ0pWc3J5VFJhQ1dsRVArc1hjR3hIbXVYQ3NtN04wcnRIS2lEZDhER3d4?= =?utf-8?B?ZlMvdzBxdzA3TDN3OXZuVFllZVgzenI1UEV4TG1RUGpOQnJQZkJBdHp4OVF0?= =?utf-8?B?MStVT0NnQnVEZmJONnJGWnJJWUxCUzNrYkJIUURRMDVZMXhvTFpya1F1RXFL?= =?utf-8?B?MkpjbHZ2YlFpUlBKYkNXejBMdnduc2pncEhxeFJUNlZ4M2NYVnQ2Vm51WCt1?= =?utf-8?B?bjlCc0R3MjZGc0I0SzUrVVI4U1RZcnoydWJkWVBsNGtCZzBnMnN1VDFUc3Ft?= =?utf-8?B?QnFHQlYvaGxGK0pTdWFsWnNNKzNKVXV6c2d0cUZvOTBEbk1GZzFRSFNSZm9l?= =?utf-8?B?ZWdhMWtxSTYzd3BBZlppUlYyOXRzWEtsc2xtSjVnSmR4ckpTTk1GdFordDRa?= =?utf-8?B?djF4R0ZLYUZ6YzFPRlltSXJjeWppVThYRDg0MGc0a2dkbi9SWTY0U3UyM242?= =?utf-8?B?N3o0aEM2UnN3eWJmaTBkQzNOa2lwN3pwVHJidWMzT0dHb2lMSFhwbHRjMkF4?= =?utf-8?B?aWNHK3R6eEN6TTZIQks1NWhUYjFlekwvZ1dhK2UxN2x0RDlVS1dpNm1UMDMw?= =?utf-8?B?RXdNNllueDdTdG1WQUJDTVhnNGU4SklFcHlSYWcwWldReHpzRXJnR1RQaDRs?= =?utf-8?B?a1dtdEgxOEI4Rk1mT3hUbnEvR3k0aVMwYnFrMXU1WFVuQjZySWRPaTcrWWlG?= =?utf-8?B?M3dia2xlaVJydzcwWlduaGhTZ25wKzB3ZDk1dnk3anFIV2pBeVIwbE5oUVBZ?= =?utf-8?B?VWRZY1NTY012Nng1V3NJU042bTBFUnBkcGNYMkxKUDJDSEYyVnhMbTZud25p?= =?utf-8?B?aEVIUnoxa2JLdXgyWCtETUZ2dy9XRklNQTBhWUdkWHBzMG9iT084dnVQa3ZQ?= =?utf-8?B?U08vTkx0UWpnPT0=?= 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)(10070799003)(1800799024)(366016)(376014)(7416014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bldjeC9PTmtaZk0yaVZuaHFMdnR6d2xCd0lnMFJ4alZBVVRCNHFiaWRXYU9I?= =?utf-8?B?ditPWnJKZjVjcVdSdkFra1dzaWdHRndmdG5BVGQvUi96cFRCMmxnWElSZTlH?= =?utf-8?B?NVREZ3pjd3VHUU5pYnQ0WE1PNmRXYjZickkwbW4xZFV0Nm1OVUJIbGNMMEQ2?= =?utf-8?B?NG1vMXdWSVdxN2JSemg2ZHhQY0o4RklmYXgxVlJ4ZTVSaW1VVjdMajRQRnFy?= =?utf-8?B?ZTFtKzRnOEYybmJuVDJPdWljQ2FlT3ZZWnVRZ1JmNGN1WVdvM040Y2NLZUNK?= =?utf-8?B?WWxtZTNqTjcxb09sL3JxTVRUY1ZHbkh6Y0dCTS8vMmg4RENkR01wdlduWVFh?= =?utf-8?B?U2gvVDNMUWdZUTYybWsvcGhSWVFINXozdGNoa0pGbGQ1MXNtNlFHMjV3SzZp?= =?utf-8?B?b0xVZ1dLTFIwTlVqdjAwYkR1eFBSMTVWa1V0Q21kQlE5aUFjbWhxMlUvb1p2?= =?utf-8?B?cnFrQW05dE9qYzFnNVFUYk1PZHBNNkZCU2pGYjl0cEl3RWFLcFd0YkFBZjhw?= =?utf-8?B?dkFMcFBmL0xGbWlYWHpYYlcyQTNsSHpTK3R5ajlCemUzTkc2YlVaeEdTeWZ4?= =?utf-8?B?Ry9NdHRNOVdMMGxIRUFUbk52UVZjMkR5K0RYNGdCczVoeHFuWVRodW5aYTJV?= =?utf-8?B?TUc0RHpWNmRiRmZ0eDFCK0dDWHp1NDFHMS96WjY3RWEySEE5dStrWVNwQWpx?= =?utf-8?B?QjZ2d3ZGbDZYdzcrQ0hqaCtpc3RuOTVBMi9xVEdENEJGelRqZVNSY2FNa2h4?= =?utf-8?B?ZlpuaHo1eHFFQ2VTVjBkM0lMZ1dKUFA5bHkrRUdjZWhRVE5XZzZRNVM3R0NY?= =?utf-8?B?Tld6bFNuVGR0a3hEenYzQlBhNGlQRWFVVzlzQ2RaYnowOU9KUzBvR2J5cm5E?= =?utf-8?B?elhBTVgwZ3hFc094NFZVKzVLczh3M0VmR1JvT1NsTTA1VGtCRTZCc3FDMmJw?= =?utf-8?B?amlOeU12ZlVmNDhhT2ZsT1U2WmlXQWYwZ3J6Y3RxVG4zQnFlSEVsR0NEcUZn?= =?utf-8?B?ODE1ZUt1Y2hRU1UzNDdlZy9YY2dzZkNEeHVwam04SS8rZGlpcVpwZ3M3MWxJ?= =?utf-8?B?ZERkMXZDeGNnRjNRTlJYa1dLK0VRdlZFTCs1Tm1ob2RGR2FDWkQ4bS83aHEw?= =?utf-8?B?bUlseGhJbzBPYWhQT2tYMUM2dVltRVBSRCtRRG9uSG1tQmIvTlJSMFBLa011?= =?utf-8?B?M0pDZWFsOExzVFVIL09WeVhQdTBPYzhYYnV1czk5SkNJOUJleHE2K3R2ZDND?= =?utf-8?B?aGhSa3pWYy83ajNUYUlQNUdjVHQvUkJia0VYOVdmZEl3eWk3cGJUQm1icW1V?= =?utf-8?B?U3NHTWYzd0ZLZkhNMnI5Y0Zydm13eUFpUFR3dHJjTEl1VEFMK3g2aERuSTNw?= =?utf-8?B?WmV5cU13U3FRTFVzVTJSWW9Pd1kzZnJNUDh5Unl3aitVeVpJb0c3SHNuNXlW?= =?utf-8?B?Z04vK1hPY1Nrb0oyVUM3a2dwZ1NsbGdUa0dUZTVScGQ1OEZRK2gvL3A2Y1N5?= =?utf-8?B?aEVyQkhEd2JkZnVLbFN3enowaFBORW1NMDRKcFdxeHFIS1AwRk9tU28yY0gz?= =?utf-8?B?RlJPZVRhNWtaZUMxY0VDNHErOU44Q01jK0NqMFZXbFNqcGRBYTlGeWFWR2JS?= =?utf-8?B?dHlJNUVxaVdCelNoek1NYXZ6dXR0TkhwRmsvcmlNZk05OEtJb0JtTTErUUl2?= =?utf-8?B?WTFIQTEzV3pPM1h4Z1FHODBuOTBZcnhyM1ByL2RvRStWTjR6aXpPMTJQb2ZI?= =?utf-8?B?N3pvQXNVejg2SHFZQnJnWG54M0RrVmI5d296R2hWN1hFWVdmdzAybHJlTXVO?= =?utf-8?B?L2o1bDVEZDhrZk5Uc2hsNFRXUVM5cC9XbXA1amF5MUdlSkFmcFQvZ3hpWWlz?= =?utf-8?B?TU9nVmpYTE8zLzBBTC9PUTJDMmlOSzhFd0NkQVVGQS9TOGdaTnpXQnVoa24v?= =?utf-8?B?MDRJOVcwZnFRbzM5ZFRtelFzWjEwdkVJTHFsSTlMRS95Ui9ST2FQb3hIc2Iv?= =?utf-8?B?eUdTYzRTUmI5VmZsZ0tjVHZEV2xrenlWZ1ErUDlxeUU5ZlhTTzkzeHFBOWpK?= =?utf-8?B?MFZMd3ZUK0FJSlJrRVQvSmdJRDkrMktjZE1EQXFVbGJMdHdFMzhvaHZPL0JM?= =?utf-8?B?TzE1S0Q0LzRiTTlLY0sxaysvL2ZTYWJiSVZkNFNheUlRQnRRWmFRY0JKa3Vj?= =?utf-8?Q?B7DsGZhOyi/MbSuvQ5OhKvtQwYa/sgEU14Z0k3WHW1Ob?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb9559f4-b857-4d88-5244-08ddd0febc54 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2025 13:24:25.7570 (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: 8GH6ZPmwPj4u2mnd2shoaKrJtGplV9V/yIvqw5hwCI1aQrqt601uCw6U8eHcEi1oUtfrvbVTRunxDohvyPN5Dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8007 Types that implement both `AsBytes` and `FromBytes` can be safely modified as a slice of bytes. Add a `as_bytes_mut` method for that purpose. Reviewed-by: Alice Ryhl Reviewed-by: Danilo Krummrich Reviewed-by: Gary Guo Signed-off-by: Alexandre Courbot Acked-by: Miguel Ojeda --- rust/kernel/transmute.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rust/kernel/transmute.rs b/rust/kernel/transmute.rs index 08e6f0ff92a563e90895efa31f31f887aa05a0ae..5b2a53aa5df041e56be0c23993f= 684aa803551ae 100644 --- a/rust/kernel/transmute.rs +++ b/rust/kernel/transmute.rs @@ -57,6 +57,21 @@ fn as_bytes(&self) -> &[u8] { // SAFETY: `data` is non-null and valid for reads of `len * sizeof= ::()` bytes. unsafe { core::slice::from_raw_parts(data, len) } } + + /// Returns `self` as a mutable slice of bytes. + fn as_bytes_mut(&mut self) -> &mut [u8] + where + Self: FromBytes, + { + // CAST: `Self` implements both `AsBytes` and `FromBytes` thus mak= ing `Self` + // bi-directionally transmutable to `[u8; size_of_val(self)]`. + let data =3D core::ptr::from_mut(self).cast::(); + let len =3D size_of_val(self); + + // SAFETY: `data` is non-null and valid for read and writes of `le= n * sizeof::()` + // bytes. + unsafe { core::slice::from_raw_parts_mut(data, len) } + } } =20 macro_rules! impl_asbytes { --=20 2.50.1