From nobody Sun Oct 5 23:40:43 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2042.outbound.protection.outlook.com [40.107.237.42]) (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 2092A266573; Mon, 28 Jul 2025 12:48:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753706886; cv=fail; b=TZlxbrjUjT5xO/5iOY0rw/zrMZJdgLUhbbJQAQgOK0h6Unw5KOlpaiQrYXfjxCLZqRV06sRwRDEWRmwwt3fAn8xAUKIEYmEnHj0braRkROuVer61fMaElgplYfL9P9VdMSuIkqu+MWci2EBDvO31uc/OIPomztZt/dTsCHNJCh4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753706886; c=relaxed/simple; bh=Ns0bO2OCYLjgNPbR3FBLi0kbV7SHMPyQrwKL548GMGE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=rncf1SnN4bnz9AKoz23EvnAmWAjYMY++H8+7sB0Rs2GmtB/p5lWpiqAxPwVsHImP5k/aDV5tefQlQ2G5sye/I/K/QpVd/sGAcOcmmQLGpnrMz9ilHB9HgYWs3wmGOxkwJuVGsmOneSr766CllCTRvjl9MvjcmmPsM7PU6Vd4a7A= 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=HVnxY9G5; arc=fail smtp.client-ip=40.107.237.42 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="HVnxY9G5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qxdALQSSPOxYlBjQrbJgWI/J4cRZPF5JmkSDYv5QA4HV+zTGelvaXJCqvwvpVDyYJPG2AhxvSJ/EQsna4vBNNu5xUkepjU+LBlJ9QWRmvd/9As4XEI8Cbj+puPLqMHkSssFQkNmggGd6DZk7jmXtjfXyd1MtH/Pjn3H9lGvUh3sg2uR+BFALQgrfCI+RSqFAdNGmtxlMlbNTkzWya+C9Ztw0zFTCs7JgVBKO626rsrpjYu86PQO6xTGqQEx7uMSMMEjNtEofNkhNbEMlGQmjERHWO+e8+Hhr+QEEITceIiesV/VY90l7/6V9uwNxIZ08uvevNdD+Bow07MteOPyoPg== 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=dVRXRIGbdU18kk+nZLy8Vu4ziSJUQ+d78b4S9SWxeGQ=; b=UDaYBmWdJcHdpzrA8DzT3aAJHRAnjPmow7ujK7PoeLqlPxt99InFJE9VmUvvKDPuHvuJpwbZAnFj1ZFUuBVQpPosIeTdQ3UH/0SOHH7tEeLi0lJPKUUVKYsfOgd5lC3ELCHFlBocuGbtQ+ytOpw2ECVR4xsZY8yXhJIsqeBh1oJbRDn4Skyw724ohV2i/koBg8AqAKbU14Ja5VTZfwOLk5C7K0QfhW9qEFHL5hb95o24klrxi8LI8eS08rAcruNdbDehGHqI+fsZqUK5XaU0SUCdsXKulRhRlJogNqvqzeU0Bxashn1ApgtjMRjOWy8jcEhjOzR2QhG7cpAJKr21Dg== 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=dVRXRIGbdU18kk+nZLy8Vu4ziSJUQ+d78b4S9SWxeGQ=; b=HVnxY9G5nvzR82dRBT4TAixYoxLo8K/qQnjmmnQcsVqClMK2q4Pt45AUiVCt6/fa8P5aFim0MrciG8t1RdtwAkrhzmXWIPfgUMzR5R7Lqo1RNsp2bdB6sWGll8qCoefZJoHeUye/Xvgl54VwJ5rlmokpgK8FmujlIn+H4cVdmNC0yl0WNScYp4DUMJ5o3c/9noABIjEfnU75xA/MP5nU6MCsL59t1bzr4XmSBO8NZsudxMSF4pS0AQiwtB0omOY3DOxYlBFZSCGGewFJJwcjvmZ3rScAcB6T9GzOMNt0ZSCa6GTAIicD0VhGfE8kPCIEF6jZ6AVyiod9+VF1p4gDyw== 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 SJ2PR12MB8848.namprd12.prod.outlook.com (2603:10b6:a03:537::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.26; Mon, 28 Jul 2025 12:48:02 +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; Mon, 28 Jul 2025 12:48:02 +0000 From: Alexandre Courbot Date: Mon, 28 Jul 2025 21:47:51 +0900 Subject: [PATCH v4 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: <20250728-as_bytes-v4-1-b9156af37e33@nvidia.com> References: <20250728-as_bytes-v4-0-b9156af37e33@nvidia.com> In-Reply-To: <20250728-as_bytes-v4-0-b9156af37e33@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: TYCP286CA0290.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c8::7) To MN2PR12MB3997.namprd12.prod.outlook.com (2603:10b6:208:161::11) 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_|SJ2PR12MB8848:EE_ X-MS-Office365-Filtering-Correlation-Id: 7845457f-7500-43a7-a1c4-08ddcdd4fcd1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QUpyMmhtaWhsNXhFUkdIZmRCUGgrdzdJNXpNOG12b0hpbjBJM1ExNDNydHM4?= =?utf-8?B?NG40SkN0T215K0MwT1R1Z0xsQ0xFL1NLUE9sTThlU2doc1ZjcHMrN0RuM2FL?= =?utf-8?B?alJ5MWUwd3Q2eGg2ZXUycmNyN1Z6YkRwdGV4Tk1xNng0ZXlZMXJUOFJXT0Yv?= =?utf-8?B?Yk8zWGo0L0NvZHRjZ0ZMcFZnVzNOcnZESGhXRGNENzlSSERUL2ZlS1VvaENX?= =?utf-8?B?SjlxMHBucytFVkR3aXpib0JBbUthWEFvc2JOalF1WjhQYk9Qa21DNzYxc3VL?= =?utf-8?B?Nk1BQ243a3BiY1IrUXo2NE53Z3RDU0s2Z040YU9jQzdRYWkybG1ZRXJFY3Ft?= =?utf-8?B?aGpRUlAxY0dpOW9OWDRWNmRKTE1oaDk1T21qbTQwQ25ScnZUTGF0LzZuM3dE?= =?utf-8?B?enJHbGlucVo5eUxOV3pPYlUrZExYdWJIZVpDclJGZWNPeDJBaHRnaEdrRHlM?= =?utf-8?B?ejZIdHdaVk1qWUluRUlIcEVtcXJ6UHAwSjJ3eW9GdzFQOG42SEZNamlXaGhW?= =?utf-8?B?Njc3SXRwRG1ra0RXZ2o5QlMxQStkVkt0aWJYYWwyOS9ncjZ0SHpKbmlMVGNh?= =?utf-8?B?dXIraGRzTXVRd3pSaDduS3NLMlllcFo5L3VMYVpwNUU5SDZ2WkRUZzl3VWJS?= =?utf-8?B?c29aUWlPMU9lMm1KdlUra0Iyc1pMeko3VlhKYkhOek9VR1hLWXptalkzcU9n?= =?utf-8?B?b0JsV3ZYVk1lZnhJaE1IQmlzU3grdXVyQWtBYWRHQ3dsSlNBYnludHp0YTNW?= =?utf-8?B?bEVjaHVudm1Ya1NPVFR6Zy92ZDAyRlZubDRsT2R2cHRSNVV4TWN6ZG54cTFR?= =?utf-8?B?T0hSZ0c0VlVEUjRrYUpJMmJUT1VIT1U5blV1S1BQeTBxRFlGQjhuNlEyVlhF?= =?utf-8?B?Z1MxWll2a0o2VzlnRUlJSGlaRkdTazJIM1NRMzZRNSsvdURxL000Y1ZYK2M2?= =?utf-8?B?L0dRcGdNc014ZmYrMHhiVFNXRm1MamVQVElYRWw2U2d6ZHhpekJZR2NKQUta?= =?utf-8?B?aG80R2pVOVgzdkJhN2djZnNpejVGS2d4K01XelVZTmNiQjZZd3l1Vm4wd0RY?= =?utf-8?B?ZmhTUGNCK2phS2JYT3pmaXFERmQ5SlVUcTRORGlkNlZsckthNDczNTJLS2o0?= =?utf-8?B?ZVZpR0ViQ3kxQWdTSnM3anFrbFJUL243aEduUlQ2dGtHa3o1cnU2enZybXlm?= =?utf-8?B?S3F2M2k3TzhHUUtHOFVvUW9aNzZtZjVFQmtVQlk0M0lpY09xRkJHeVU0ZVJ5?= =?utf-8?B?OVFpbmV1Zkxpa25neGlMb0xYZThMU0FGWGVNODFLbHVON2dneC90R1lIYUh2?= =?utf-8?B?Y0FvcmNYUitadlNldHVSZ3VqYlI4QlF5VTlKZzl3TjFYVGY0Rkxkci9Wc0ho?= =?utf-8?B?ek5kRCtYZkVmS2hqUjYrRVljNndPU2RpTzU1TTY4bnZPZTJUb0xLMFVMeVNR?= =?utf-8?B?ZkRBclF1NzhMUmhVNUpvWTdPZzJzY0pCSGswbTZGR3BsZFNJWDE4TVlMOG5x?= =?utf-8?B?a0pWbWtEYzRwS3dKK210VXJzaVYxbGFCNmZyVWJMQzlhV2Q0dVRpQnhBZWJm?= =?utf-8?B?QTVtdkt5bStUZHlmbFk1UXdZYW9IQU1idlJqMkdnekM0YTRpamt6YnlQUk0v?= =?utf-8?B?Y1k5bXptbUp4SDRDVkFUalBVYzFKbDlYakJDbzhCYmFhRmI2QnVuQm9hNjg5?= =?utf-8?B?cmdRUEdWaDZTbWRzOHI0bGZVbVJ4SHlDcGNwaEVvTExYUjBMaFBJUjZ2ZGgv?= =?utf-8?B?N2VWVTNCMkVMV1pYTy9tazFqVzk0UHBCTFpVWTJKblBRRHpWaUJPU2VOSEk5?= =?utf-8?B?T1c1Qk1CUmgvWkY5Sng4aTVpRnlOVkFWRGNFQWYyVFZycnhZZm9oNzlwMWFQ?= =?utf-8?B?M0xEeGtFOTlGNENjZEtsQ3A5TCsyOXFvSnJqWjFXTEpoSDFPaVpaOTZvMTBM?= =?utf-8?B?Z2pRRGMyL3NyUVYrTzlRYTBNUkhyRTdHOUZkRVRnM2JWSUU2ZkFtdWNnUTNY?= =?utf-8?B?TkJYWFZRM0hnPT0=?= 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)(1800799024)(10070799003)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N0ZuRHVndnR5QVh3NkVFRHh5UHJYR2VDN01CUGRtMXRGZGRQbDN3ekc5R21Z?= =?utf-8?B?UGtCVUFwVWJtWnRJK0lhbko4ZERZaHhoYXBTMmk3dEgzTWFRNUdhT3JVbzA2?= =?utf-8?B?T2laSGc3QnNzMUFVN0pDeFprVFR2TkFXSE53clRHbU45QnlNQ0F3cWVVSlZ2?= =?utf-8?B?L2F5OFd6ZDAwMVZFaHdiZGVyUmhrM1k3RzFMM3NDdWFVV3NaT3Ntd1p0UXhs?= =?utf-8?B?dE9BaXZsL3NUZkE3R0xqZTRsdHZLTWRBemVSRkdsVWllMVhjdjgrTm52OTNy?= =?utf-8?B?UVhoUm5Kc1d6Z2wrTkdIaWp4WUNzSlh1Rk9XTTl6YWUrRkxXdFJ4QlZEdGFt?= =?utf-8?B?YzZLdC9IeUJWc2NwMFJ5UlFJbnBvVkRHTlgyb3ZqLzM5RHpyK21ndWFnUGRI?= =?utf-8?B?ZE9SVjNVWC9GNkZEaFBSRTY5K3hYRVUrck9XY2tVMkpEbU9TU0FnKzQzOGQ2?= =?utf-8?B?WVYxMTJDaGl2YmlBMTZ5c1d4YnhBaWhDSUVhZVFudFdMK3hqWDBidDJpQlJL?= =?utf-8?B?N0tnMHgrN0lLOXJQMlB1VUFVMjhqbFkrMU4xRUtNUFgvZVZrZWFtN3VvSTRr?= =?utf-8?B?U1lrZzFkdUxjWlJvMHdLcm0xVnhvZmErSkVBdTJhRXRjWC9wcVNGeEUwYXV5?= =?utf-8?B?R0FxdjBQQW44N3FIVUpqUkV3OWZodTBkdGt1NHRVaVpCc3VRcU02U0VjK3hn?= =?utf-8?B?QVhYZUtFUTVsR2VVMlZqcWdLY1FlVDdGM0NvaUdma0ZySzRGYmUwN01YdHV1?= =?utf-8?B?ZTBDU3Y5R0FMTXkzUE1Rck5aT1VZL25mbU5uMUlDWU5LT1UvL1FuSzBWdTJy?= =?utf-8?B?ZnNBR09GeHdhT3VJUnNlQmkxVzc3UEFVZGhtR0U0ejNrSW1oUWQ2SG1HTjdq?= =?utf-8?B?S2NCSFdhOUtEanNvaUE0U09wdHNxS1htYXpyamhpYW5jUXZzUWtEbzVhcmtS?= =?utf-8?B?MnllWGxZVkhJUkV3QzRaSkJFclF0YVVmeUtkNDFRdEVKMWxHOHF6QXppS2Nx?= =?utf-8?B?VFVXV2ZQRnpmNmEwNEI4dEM3NDZDQzdnNUlHTXoxMEFLZnprcEMxUHhLaEs4?= =?utf-8?B?NytUSk1BVTcybmh3bDhtYUcyM0lpQmtCY3hCbUlHNnY5Q1puZmdZbDBXc2Rk?= =?utf-8?B?OTd2TFVMQkZQR2dWRlhyU0Jldm0vVmxJekJka0huY3FhUHRUVEt3V3lXcGlI?= =?utf-8?B?aFFSY040ZHo2L0ViOVZBWWxHWTcyNGhqMU9qSUtPTy9FeDFzbmJSVnhXYWlM?= =?utf-8?B?dWdxTWF1d2ExVk45QkFJVzdkT2JmeTRHdVlVM1ZVdm8rd0tzdWszQ2NUV09N?= =?utf-8?B?WWcxZWgzMlllSnlScDlVay9OWXpIdWNqZHMwVWtrQnlaekJyM3ltNmd4aGlH?= =?utf-8?B?QzNTaWxHaDZGSC8vbS9xR3lhZjRWRWJDZXdxeExtRmZJRnExaUY0ckRRVUFU?= =?utf-8?B?RGNQWG82VVJmTll0Um1iSkJwdktLckRGZTdoQ2EzaFExc01lZVZIbTlLZ1lP?= =?utf-8?B?L2FYQ0Y0NlZoeFdOVjRJQ3Bqak5xRlB4VXNxclErR1hoN2dDdVV0TzNKamlq?= =?utf-8?B?a2NOY0RrbHBmQi9wTDd5ckJIY0xTbnVpbDAxRXQ2VWZ6Z0x3MzZVclJIQTU1?= =?utf-8?B?YTJBL1dQd3NsQzRQOFJUSnIyNlBQdjdIWVhEQ29OemJJdjVHMjZuVmlKc2NM?= =?utf-8?B?cWt3UmpvQmJkQ3Nlb203czZMb3NNNGlRL3BkamlYQkdJYlRXVUkvMWFIQ0k5?= =?utf-8?B?TVg1NzFkWGYwaGp1aFd1eXB4VUk2c09zcW5uLytGRmtIdndkVU8zWmZWL0N2?= =?utf-8?B?NDA0Nll0RVJOM2ZIa0x4aUw5d2hKMFBodXlpYUVvOU45V0RZQmdsYlpyYWlP?= =?utf-8?B?T1JzQktONDRLMTBHbVNlbVI1QWNLSnpsYzhqdUdqVlVWRGpwSVpXZ0ZXdUQ5?= =?utf-8?B?U0lwWXZjeXVpK3ZOdi9rcERvYitZeEErSnE0L3ZPOVZrUzdXN1FTL3FJYU0x?= =?utf-8?B?SUwrVVoveEp5U0x3azVwQWE0VXp3WVVNTnRjKys2QmlIOUJYVk85OWV4TmxH?= =?utf-8?B?eWxncmV0QWthS01aTzRvQ296MzQrclNST3JYMVIzVDFzOGxEaFpSeUQyV2tY?= =?utf-8?B?WkdoZW85WGNWVU14ZkN2dWRFbHk3QXNlNHRoQTZXMFdNM3dRS0N6M3Fjcm1k?= =?utf-8?Q?8+r53DOOiEjR/KR3fsHe1HJxpsQD0c8AOzYoPyvCKRd0?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7845457f-7500-43a7-a1c4-08ddcdd4fcd1 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3997.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2025 12:48:02.1913 (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: VW3d5negqHVuZSeQ3+G6goZ8bcEPzMXgnK6yN9J3VHUXZtq/OAhcbp0JPJ5XuBFz68JMaJ/GHhtOfwHckaqG4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8848 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 Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl Reviewed-by: Gary Guo --- rust/kernel/transmute.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rust/kernel/transmute.rs b/rust/kernel/transmute.rs index 1c7d43771a37b90150de86699f114a2ffb84db91..d541c9960904d8c7f755351f22d= 06e4e8dbd546a 100644 --- a/rust/kernel/transmute.rs +++ b/rust/kernel/transmute.rs @@ -47,7 +47,16 @@ 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] { + 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 over `len * size= of::()` 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 23:40:43 2025 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2079.outbound.protection.outlook.com [40.107.95.79]) (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 2322C26739E; Mon, 28 Jul 2025 12:48:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753706890; cv=fail; b=A53u9LZpuzyOqia9drKrccZ9WrcIm5eRMAcv1thZLENmfvUX6Sk9wKTP+U5C4A+OwpJsEY3jNcKLVLuaffhAmYGhtbiE1v5uv+Xfear+7BzymvMHnU49S8+UrSCCgGmDq+jMNKHT1zHZCt85XpUU9AzZq50jkzsKhfNpJCHyVak= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753706890; c=relaxed/simple; bh=TFUxzJXq3omBp56KmANoMBYZR/rSlNvi4iOqP8N3HDA=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=hAxZnePe1JzEp1AfxrN/pvGhSIr5eJXNvNnoftovXpG+ugcrttOi74i7w+Oq8rURF2MBMgeHS1LFF1nsf+bzcgWqMawNNs2y8M/cm2z9AZlLpPoeNLrQgibUUKN3Mzxoc/3Th9mxo9/1qR83hIvekwvVAyp2VBRwRjoVKSHBLqM= 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=h2nJ4+ec; arc=fail smtp.client-ip=40.107.95.79 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="h2nJ4+ec" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=v1nAYHLeikhRGJLUjdKftmwKxNf+YrFsr7O3qAe6+ZODNCfvc5LQSaRyYi10RAhcacUs2LjGOVXJ/pgYNo33ecZyK8XD5Y4ssPL3hICu4fSgR19pzRHpzSvpnwY/eSCrAqc/berE4Mrq+FfIxabCCfwCG1aLdUbWgBfkPyzCl9EoQhgGqESQn3FKy1gqw07FjnSPXZuBC+p4Zu0EvgIkUml1RRSOo5bz+QVevOQ67LHRnOcVIvxI1ChUxaBVmIfdl/2NPyFaevRAmGR+RGUKZs55VcA279UxfG9I1hWV6zo/0QWvUeYYItnRPAqGfz/GZx5DF/055pOitb+SCV9ldQ== 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=fLNtD5FNcikQ3yWgOAxSWxHZwCkmvAvMD8SesIYL7fM=; b=xQI3qu1qIilt9vDQ2ygSB3zyE3VAXNj/+HiGYdRyna4yS++K3uppRmh5EksOsE3yxo1fH1RIvX86PFT3XgYJEroey82brRUazfXFwCtJ9qkd/gBxaVBCo+/ntFzQh82OW2lUbSjCevgRhmFbl50B98eePIxfcoOWJYCkWMjJFaVyEZIWrGyR4B/As/JycRuegaSNXlfnuylLYywlacjEcMjfL2F+s5/tsst2E4QEw6PxoistMmtcr6AP9v+lEpvSm/BIMznTOLJKmnwYIuGem6apkiIP4ZQh+nVYWDnZzfGKzSUrnS9AAc2SxNfysYU8TE4yEQH0zWVhKVpHOwspag== 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=fLNtD5FNcikQ3yWgOAxSWxHZwCkmvAvMD8SesIYL7fM=; b=h2nJ4+ecs/cAwhvuMKR2vnzXJ0baCBkgmYYgvoTcV7ahbUJy7CNfaj88GL9EneRHwzER3GCjMwUxafgwnSQ/UdUODQmI7OFzyR6JGAtywCVEugU5c+eEhsUyJ4zcPq/v7zTfpOUETEdIvraClYNEnkkf9NL3k1eUgMzQRxMvINzV/fsGvMbZe6x9BSiEwWpheBizJ4UFOFiRIjFzjI1ngekiZp9lyciIXTgvPjFdQzRsmYYTvqzeIpoKf3rpq0k+yOCZ5H8Y+gsvL+ND/CH5n9ixuyWxtQKkktrPx/hTiSt5XCvL35PP900XqEOL2UNUonZKn3uQCwq+EVmOzTA88Q== 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 SJ2PR12MB8848.namprd12.prod.outlook.com (2603:10b6:a03:537::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.26; Mon, 28 Jul 2025 12:48:06 +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; Mon, 28 Jul 2025 12:48:06 +0000 From: Alexandre Courbot Date: Mon, 28 Jul 2025 21:47:52 +0900 Subject: [PATCH v4 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: <20250728-as_bytes-v4-2-b9156af37e33@nvidia.com> References: <20250728-as_bytes-v4-0-b9156af37e33@nvidia.com> In-Reply-To: <20250728-as_bytes-v4-0-b9156af37e33@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: TYAPR01CA0067.jpnprd01.prod.outlook.com (2603:1096:404:2b::31) 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_|SJ2PR12MB8848:EE_ X-MS-Office365-Filtering-Correlation-Id: d08b9035-7f3b-46f5-5684-08ddcdd4ff86 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z0dVRVoraEtVa3FQS3ZIRVZMbUlXdWw3RDkwTnJDZFNjQ2NRQkxFM3BBcDRP?= =?utf-8?B?RjBSRm5nd1BGZWNDNm5FWDN6Nis5WXJSZDlEQVBuMDJwMjg4cy9yOXc4Q2JL?= =?utf-8?B?UnROWXB3aHZFT1FjelFUakdlM1ByQTQzTjA0UU1DeTBaakN0ODdETlFOVXNq?= =?utf-8?B?bjE2SHYyQmp1K083dnpjZkJ5UnhqZVhycHkwbjkzUHQvZFBONk9sTXAzWnht?= =?utf-8?B?bDgrU1JBTlpzank1ejAySmI1cDk4bXF0T3hDNlo4TFIrOEJtTkxNRjYveHhC?= =?utf-8?B?SkZkWFhrRWpObDZabUtmWWJXdmZ3MG1TdldzU1ZuZ3V6R0RzZmtUWEdqOG1S?= =?utf-8?B?T0xnbGhvVEZ1OFE2cmxHbndyQkh1Z2tGaTVHdmR0NUcwNnQzNDg0Y3Zub1ps?= =?utf-8?B?VGtJbktZVXJibDFRVkQ5WWJySDNDRjdQS0g1ak5Fc09EMnh2ZkxHL3BrTHAv?= =?utf-8?B?enNTdndtdm1BVVdPQUhYcmpNNEEwYVVUb1AyRVd2N2p4R0g0Wk5HL2RaWFUw?= =?utf-8?B?ZFZ3T256Rm1LbGw5R2tFcDk2bm92YmxkNDVGZmlRTzNqOHVQcEM1UFVLRmU3?= =?utf-8?B?ZWpqamREeGd3NjN0SmhnMjBXRjB4clRGeTdNVFVVb2dIMGlDRzhGbHNPN2My?= =?utf-8?B?STJYS21MK3VjbUNidXJna1FpOCt1WUNEUDRmYkVGWEVscmIrdnlxeFlrS2Fj?= =?utf-8?B?dWhjQnFhcGVabUhEbEVWYmZVdncxeUpNTTlHRXdXaTgxNU9LMklyZ2l4bE5h?= =?utf-8?B?YUhmeVN2Zkw4MlNhYlZIdENoUFh6ZWVXRlBwS1JsZU5GR0IyNFdKU1VTYzc3?= =?utf-8?B?OFBTQzFWc2d0U0FsRTUrQ055WFFDdVVvZXBUbHRxOXczZFl3Y1Q0YW5rL3FQ?= =?utf-8?B?S29DdGhOd2o1dDZJTkY4ZTZqSmN6amhLQ2dLM255QTlxWUIwYlpaMVZKNERQ?= =?utf-8?B?bkRkZnJSejBTa01ENktjM2lxOHRKeER3ME9zWmRDZTZYdFRtekZ1VjFtSXFj?= =?utf-8?B?MUtQWHNaR3IzT1BMVFVUWmkvQkhvWnJ2ZkppZlA5bk1mcnBHLzZlS0tZOWVW?= =?utf-8?B?WWIzN0xqYncrZjVXb0pBMWE5MGJOS3ZsRGhFVkNNdXVzMTZKbnVxNTlad3hr?= =?utf-8?B?VUJWMzZvbE5xV1k0YlhkN25YYjFjSzNFejNnditpU2Q0UXlUUjZmRFFzbDRU?= =?utf-8?B?Vmpqb0YwL2RoR1B6YVRqYjc1TFYyN0UvbVZ6NmFId0NJcjZLN0NzcjVPbU91?= =?utf-8?B?L3Z4WFFJbXVqaGZhRnI0N25uMThWZUx3Yk5SMWRBM3NDamRScFMvWHlTZ2lx?= =?utf-8?B?UUwzSGJnOFBEYWxmR3dHeTIyRmFWQUY0dko4VDZHbXpkOTkwUEwyRlV4VHZa?= =?utf-8?B?TFFheDRnWmIxU3VmTS9yeUZNNFhlbDRRYjFBVXV5eWFXOXZZVG1mSHIyd1p5?= =?utf-8?B?UTRMaGpYY2NEclR6VTd6STJMdW5saGFOUnhubVZLNWJmMWZBQitHRWUxVkpF?= =?utf-8?B?WExnRUtGalB4K1Y1bkZDTnhoVHorWSs0S3Q1MW1QbDJqbXZiVVN1bWRHeGVW?= =?utf-8?B?KzlqcGUzNEdGSUxnTEZQY1dFdjBna2l0Qzd6V0F4b2hmcWxTQXRhalhjV1BQ?= =?utf-8?B?VWhsalRuRHFMejV6ampLZUJHd2R6eGtjYkdYRGovcmVTZ253d3RFeE1MdlVl?= =?utf-8?B?QjBIaDdXcElJVjlwRURONk15UUJTdzluN0x5SXEzMjZHQVZxSVF3d3RtNnVz?= =?utf-8?B?QW03cmJqc2d3N3VVYXZ6ZFh6N0psWStHYURiQkZ4TFBwY2VReFp3UTF0dDJa?= =?utf-8?B?cjJ5ZW9HM0RmQ3pXVi9NYThPU3J5MTM2YUw3VTJqNTFweTdwaUhET0tSREdp?= =?utf-8?B?LzRWYnByc0Y4U3Fkc01tOWxwRTZINGE5a0plNTFTS3FaOGVOWmVsQnNsdkpl?= =?utf-8?B?VFVRTjRjL3pSMDF1c21OUWE1MHdPYUJKQkFKSGwrQUNpU0J5c0dxd0pFZ0dL?= =?utf-8?B?N1JZTkVVdzVRPT0=?= 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)(1800799024)(10070799003)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTE4Nml6aFV2czFpbVhJb201WDh1OWkyOWJWZlArbjRQUEhxa3hVRGIwYmtP?= =?utf-8?B?bW5oTzRjTDcrWVVFeTFQVktualFUQWh3eHFpR2N0THhxd3oybVVHUmhjNDBI?= =?utf-8?B?dDhQaGEzYVB4bzZtUHVXbUJtWGt1T1hHS2RpT21MQ0hoYVZjNXFZYVNkMVJw?= =?utf-8?B?ZjB4WXVzdUpJbE1oOVR4b0JWZ3dCUElDK0QyYnlldytKby8xdTFNVmgvRnVo?= =?utf-8?B?YUNLSlpGaERXRE95Uks1aHBPV2xPU2JDWm5MSHNWemRnRjY5VGFraTcxaWoz?= =?utf-8?B?dWVVNzBadGlVMUJRcnRsVWMzWGVrNk5KR1lXWWhNdUpwbDhpclhuZWNZYUJq?= =?utf-8?B?Si8vd1RSYzlPM1kvZmhGdmJ3U3RjdXhXcWFsalZ4MWFBYnloNU9LWjZpZlY0?= =?utf-8?B?RGI4N2dKa1lUbFNRK0xabjJSQjZBR0cxdm1MTktDWGQrSHJTUXRzcnNWbkdk?= =?utf-8?B?TVV4aWIySlo4OENPOUFScGdhd1ZSbnZ5elVBUUlXcGdaQ0xYUm02N1hxT1pi?= =?utf-8?B?dzJtK213dlg2blk0Z1RxTXVyWVRiSU1LNDBlcDFBNGVxK0FuSS9maHJZSVZz?= =?utf-8?B?SXAzMjBINlNBOVhWeTBuYWdhb1lxOTEyMEwwaGd4c253SmZCSFJvanJoeWdQ?= =?utf-8?B?RkdyWDk4TklaQkdBbDNRSng5VVBnR3F1YzRmRmhNU0o2eUQvY1M5bHdpakxq?= =?utf-8?B?d2xLRm4rYXlSZ1ZmTXdJM1g3R3RNZDZ5cm5QWjVCT0VWMWJLZVhSRW1kRmUx?= =?utf-8?B?UHp5cmdFVllMdVE1TG1YeG52dGhJRndrR2ZXQ243NnBOY1R2S2o0OHl6ZDNh?= =?utf-8?B?UmN0L1h4SmlZeXJOdTZzMWt2ZTZxeUZyd1pkNGFKcGhwK0RpY3VWL3FTRUtS?= =?utf-8?B?NlRuc2JXWFhXUC9sTmhyaFdZTmVqKzNxdVkyUjRRQS8wdWxXVXNpS3pqMHFL?= =?utf-8?B?clRXUEVhU1RKZWNpS2hnbklNTU5lclIwZ1BpN2kzWUg4eDNWNjlBUkFiRnRX?= =?utf-8?B?di9VTEF3K1dKWlZQY3ptZGZ6ZE5MTER5cjVwRzMxSWNHc1RvZDErMGpQeDB3?= =?utf-8?B?Z3V2UGxQa1RYUXVyNHF0cWlKWXc0YnNFTEptaGZ6OU5jR3JtK3pYRXRuVnQx?= =?utf-8?B?RHZ2d3JEU3VXbG5SYXd2N3ZTNjBSZC9Eci92bDlTTkl5NWh4NmlRSi8rWWFW?= =?utf-8?B?UmswdXRKUkdBdVIzcVNZam4zc0JVeURHbXcyVW9rQ05iZ29YYlNGM2l1bjg2?= =?utf-8?B?ZWZZNjdaUVFLK3RsQVprMzY1Y0hhd3F0emdGSDlSLzRSbVRBYXZQZm5vMklm?= =?utf-8?B?aFdVTXlkN29KeDRDaFZBa0ZYMlBNQUg4RVAreENueWNxaXJEaTNBNGdwR3VD?= =?utf-8?B?Q1YzdzNiNk9tWmJ6ekdpZm5pUldsMzRFczlUZ0I5T3RpdFpXcFJFUStBUEs0?= =?utf-8?B?WEZqMEZyclQ3eGQ5czI2bWR4NytHSUhRd0pKZDdkMUREd3pFdEdPTksyWFJF?= =?utf-8?B?ZnBvRW92R0RmUTY0OXFkeWU1eUIzSk9lcFNtcHMySVlDM1RwWUtScEl4SUpT?= =?utf-8?B?RUhtdGtNR2hvbVJFZmtZOWZpMWo3N21mb1pBWGxiMGpydC9mM01wckRaaDhl?= =?utf-8?B?eDRTUmQ2c1NkYklYNXBybkw2RFFmZXdHb1VxTkdMMFJSY3IwdlhuenRVejJq?= =?utf-8?B?TndtQXhpdG5zMWFUaEpGUW5YV3NEV2NSVjlxamU2OUl3MWJrdW1kcmR1UG40?= =?utf-8?B?cUNEYzNHSEs4VytLdTVhbThVYUluY0x6eGtZMlNjZU10WlQra1J4c210TnU2?= =?utf-8?B?Wk04M0d0RVFDY25HSFNtcHlGcE5KL2l6RFdHREdnY0d3MWg2TFhZeWE1WlA0?= =?utf-8?B?VUMxSCswRTh1QzE0QlhEcGJVaURFVHh5VHR4QUQxQ2pIeTFUTXNKaXpRakM5?= =?utf-8?B?aDBnSkZJL3NIRTVkTFNza0FQU2oxQU1QTDJPZnVIUS9LN2E4Y3p2NERUQks2?= =?utf-8?B?UVdjaVUreTVuQmVBT2JVQndiZE9KVjJvWXk1UmxzcE9uOWhPYTFFWWxvZ20z?= =?utf-8?B?UTRZcmFhSzhJeXdVZXp5ZW1JSVpNVlhtY1FYRWZSdFFXWFFLQkt0SkFZSmg3?= =?utf-8?B?Mm1qYk1KVmd3bllyTWpZVnE5OGxrOHF4OE5rWVA2YnVjc3RvNjQ1VHNxRnBP?= =?utf-8?Q?k/FXC00SZG6H2m7TuOYHXYXmjdeJyq/aBhnex1tvlbjp?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d08b9035-7f3b-46f5-5684-08ddcdd4ff86 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2025 12:48:06.2295 (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: LTLrmZafSR307Lczg3659BBI6vWDSYGhqJ2VbvlZc3OlKn6fhdnJ0C/VYKpnAkA1vVufLe5EFmfsGDLrBF603Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8848 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. Signed-off-by: Alexandre Courbot Reviewed-by: Alice Ryhl Reviewed-by: Danilo Krummrich Reviewed-by: Gary Guo --- rust/kernel/transmute.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rust/kernel/transmute.rs b/rust/kernel/transmute.rs index d541c9960904d8c7f755351f22d06e4e8dbd546a..000fda2a78f8e6e8378bbe93cdd= d8a5008db20cc 100644 --- a/rust/kernel/transmute.rs +++ b/rust/kernel/transmute.rs @@ -56,6 +56,19 @@ fn as_bytes(&self) -> &[u8] { // SAFETY: `data` is non-null and valid for reads over `len * size= of::()` 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, + { + 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 over `= len * sizeof::()` + // bytes. Since `Self` implements `FromBytes` it can be represente= d by any value. + unsafe { core::slice::from_raw_parts_mut(data, len) } + } } =20 macro_rules! impl_asbytes { --=20 2.50.1