From nobody Fri Jul 24 04:50:45 2026 Received: from LO3P265CU004.outbound.protection.outlook.com (mail-uksouthazon11020132.outbound.protection.outlook.com [52.101.196.132]) (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 BAFF53ACEF4; Thu, 23 Jul 2026 18:20:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.196.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830813; cv=fail; b=meHXHlAZvZKtMpLiEAjkUnPUceNS+IHG9VgrmAV8bOH3KjhP1/DmKFIKGjLNZGeuw+nYBXCBlwVwDwtqzF5kx1oFl1TSEQQl/Dt2727jMfWCehqMiYMDRfJ2kZDfLh+DYlni6KmqTe2My2vo25PVfPC35Y8wFz89+DecDtBIWMc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830813; c=relaxed/simple; bh=1+lvbRuuPYTAzwgjwLG+/9MwJXt2qVme9pfGJbjBbXM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Pc+NV+pEQCxEeINSfsv1fUTRh/Q9bpw/0cAuTrQJ6hy5I9G++ZDdAmEEwU2x9hzqTF9A3pP8RSfpekEmRkDe+QEG3OGcwZeMgirnK4kS34G/FaAFUUYYVv7+cIHM7dOFuxATtmnqOrSMoP9nF2Dm/yW4VFF25CWBRi78fTa2810= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=YN8T63yS; arc=fail smtp.client-ip=52.101.196.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="YN8T63yS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ncgjlcrCFmpEgtFXgyS/IsA/Ma/LmkSNnW//96RuNOO03od7RNk9fS3qyCBvBq2NzHOtE5O/w/arA4TE+0gg1ztwSw+UxTr++dkNBcSZgWAGTFL/bVPdM0wGhLKExvn5KQUZWexCqzZCdyXOSL0F5ab3D0ZifWiuVWVN27oHCo4Ffi2V/jFYiBVMUezqrli51D7HJT6mw8AKLH2oz9P16olfajF1+3rREagVaPNT6mLxcU2v3GzY58Px4mWaNYd2oBGxhKTexYoO3ikE9wlBB7p3O+0qnqRAOaRDO9JJ8HD8bryUjpp3X2F4GkxJbJobyeaph894FppEMJG/m1PZLw== 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=16+5Or+5jbmW4ekV5zxPTqBgYxOrYLztkChvKOiwHqQ=; b=Zy+nTaFj0zwelWHoJ9Bf8lh62/SqtkZC2qcpYxWDqEtrvvVQ8ABRlCzvGlxnD/mdkJKFSSGuJOT/ZHAJT09bbMiJ8Fy0J5y2ko+b9GtS/o6xF/5az/des0vKoHMSauNU5vFo74iWSAU4QKbCc77IKvxQMJxGGy5miW9iRgSNqrU8/svaoJn2knCB1Qpb94wL50ToQRdMySMj+hl5gnlUpKKZKEy/qZ9Aa/pnusUGXeXvQwD1xvofiWMdwsgAoN+o/tdAZRdQb/gh5x8e7ONEJ4eaTgO2F9LO7MaCn1sB+xqDIsORiCaO4mUFpJoB3bk9bpF1PrSecbA0zjZp8elygA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=16+5Or+5jbmW4ekV5zxPTqBgYxOrYLztkChvKOiwHqQ=; b=YN8T63ySc+bSfDH5+Wbm5Hv+TCsaqvnElSlqjffkF3DlhawfaJSgZAVl3mbm1YZIEx4TngeO83u+IFBa0reZeoIF/p8das7ZCUiH58qMyInEfdDVYbR3ItMZoVIJiO6IcFCxn4PF8S4E1p+1dT8fFocnQX1Kas+OftyhxYh2e8I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWXP265MB2549.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:4e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 18:19:52 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%2]) with mapi id 15.21.0245.009; Thu, 23 Jul 2026 18:19:52 +0000 From: Gary Guo Date: Thu, 23 Jul 2026 19:19:44 +0100 Subject: [PATCH 1/3] rust: pin-init: internal: rework how `#[pin_data]` handles cfg Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-pin-init-sync-v1-1-dabe7f902cef@garyguo.net> References: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> In-Reply-To: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784830791; l=7556; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=1+lvbRuuPYTAzwgjwLG+/9MwJXt2qVme9pfGJbjBbXM=; b=Q0v27zf3q3n1AjhZdWIgyHBsEXTIxStZg+B8KJIZ3lVOA5Qw1IvhEWioPk1ES9GDNKQurJSuS sqxWijpnocJDUXyu/pKUHAc2tl0dPzdPoOkUh4BOgfN+MCzVaboiF6k X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO3P265CA0024.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:387::19) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWXP265MB2549:EE_ X-MS-Office365-Filtering-Correlation-Id: e3345df0-68b5-4cde-8cac-08dee8e6fced X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|7416014|921020|3023799007|5023799004|56012099006|10067099003|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: swdu9FKFCY2OPHZ7GNzTqHYwj9uzazyOCaGpN5ZQG3vRNDPhrcEnB58D6RIlCJQCHwOsv4hyRovJMhukqDgdkv+PGpMiSq+hEu9gv9RmSNv2RaOIJQaUJ3IdZFsd4dnmfEZ+5dcmF5/yjNqfVG0BqYRCtLvykFF7sXq+pUHU1S21kG4sWouv4vOz/JfeYUDLh6t70DJuSgJ4IApZcXe/J5EuwQSFF3JNepswbI5jTD3C5yUi4j3cCCQjapR4nL1OyHYx777kIm5hFf/84WRQJigZV4kFzCHfuvHRsVPcdQ4kMPyN4y20rnSyEznpj0pU5ds3f1kMNfDAheSfpGV1sSA6JF6h9b0sw8GbcTmk0TYmMb8hEzg9YGvEhW+7ewRGMv25ATdeytvv9KYdshfJ5/wxaLfEmaVb3jkTp1DuUgtwn9pYhVNmHAuHCoBIGIdW3nC9DzyN2Uy8INzMtY0l+qbi1BenUhiSNqhCTeGIIIf3Rw55WabG4bcmxTgRl/e6Mio16VCuLpRYNPbep4GWl5xo2T7woywOEf/Lrw4/s5z9jiSMALqP5ypFBMfMl982bIFD29ig5dKUVsM0lAlE5aVl5AoxnY1Q30Db3xdgAfHC8yEkX1dcS6Y4h3UQK1jarRrvgTbbKn14zSWD6oO1PT464KLB5MFIlpwr4GWRjmgegmve/VGnjurvOCcdy57xrclpYDcgiu8dOgGauRtC8w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(7416014)(921020)(3023799007)(5023799004)(56012099006)(10067099003)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RGQyZGZJWDQ3a0RtTVhWSS90U0t2NWRyWmZDWmJJQmszMWhxUnJhVTM5K0M0?= =?utf-8?B?dlRHdTNoNFBFcGlWVjRnLzdWaEk0MCtydVdIam96NUpYd0VUYXBJZzVwbGtZ?= =?utf-8?B?M3MwWUF5alZsQ2pVenFobWUyVmM0MTNzeGcraFUwamVWTDBkaGo4TnJoVlE4?= =?utf-8?B?MERoN0pHWjVwN3FXUzJuT1hGVFAzYnI2REVBd0psSzQyR1QxUWxqNnZ3RGRy?= =?utf-8?B?TER1cVMzdTgvWGNSMlVWMFFZdlRvaFlRenBMV1JRVDBINHExMWo1clVWcFZB?= =?utf-8?B?emZxOTljTStLTHlpeEZQSHM5VkJ4MjJmeDIvTFpkc0J6R2V3Y3pJTFFBRkJR?= =?utf-8?B?Wm5nbDI4TjhoZzZENDFjMXFINEZPQUQ5UDRJc2RoZWtMWWlpdVdHNjNrdk9o?= =?utf-8?B?WGwxbmpkbFAxdnRCM1Ewa0dKSU5sVGdLaEhBdktKa25jdjJ3QTBqY3BObVlD?= =?utf-8?B?czZKTDIzUUhMRmVZS1FSaWJFODBYRjg2RXUwUnFUdHp3MWl2TzBSU0libUVY?= =?utf-8?B?Rml6RUxodUtqWWpmRVJJdTBQdGFsSnFhd1AwcldKbmk0NUhTcUFSSld2M21X?= =?utf-8?B?dlRkUm9vUjNSSDNVcHNodTVuQnhFOG5tMHBkU0NnWXBEVWlhM25ZOEtDbEZY?= =?utf-8?B?SzgvcnFUKzhpZkdEdGNqbVgyaGFZczIrb2MzNk1xcEZTYXQvTERpemhsSSto?= =?utf-8?B?V2pLWFVpTTJ0UEkvMy96bG1qVGZCTFZ5N3M1VDRsYWx6S2VoKzZsNmZSanRJ?= =?utf-8?B?aUJ2YVgrakR4T1MzVU9iOFFHL2RGTDRMZkQ0V0JDcXhaRTVpZlkvNkMvVE03?= =?utf-8?B?WFF4MXg5OGwrRmpiMjJXV3dZQi9FaFNGeWdQM0xzSmFrZFl6QmdXazUwZ20r?= =?utf-8?B?d01Gclp3SkdQMnVEbDgyZC9ua2tLcHF5U2gvVHk4QVF6ell1MjNWUHBsTFJ1?= =?utf-8?B?THNZVEkwTmpSRmtnMURUMjk1bWczUkF0Y2JuSExhMEdvUHpzZDRqc2hvOHNW?= =?utf-8?B?SlFVTmlYS0lsVElJbkVKTER2Z0ZubUJEc2wwdXUwY2R0VnlMTUx4QUFSNmpi?= =?utf-8?B?V0JQK282MGxDQ2E5T0lyYmdTdlFVTkR6ekIxOFdIQWhQZUZWMEZTRG5SR1BP?= =?utf-8?B?OG5WVXdyem5mT01Ha3hESWVBV3RRWHZZWndzeFJGdDdTY3JjUEszOElKNkJa?= =?utf-8?B?SjJiVzhGdEo3Y2RrT3V4WGIydGMvZTArN2lyQmxrUW1acFdSMzJ6Nm1xdW1y?= =?utf-8?B?VU5sOEM2K29RVjY4MitDQUdpWHF4QWZ0NmZvdytleUZFSWF1NmVaa0VmOGVw?= =?utf-8?B?T3NDdTR2Q25Icml6Y1ArWmFteitYMGdoV1NOSmlTcUV2a2FTbXZldVB6VEw5?= =?utf-8?B?dW9WemdVaEJnY3MxRm5vaUdxUWFiWGMxTnNVRmpTTGpPYVRWc3pwNDI1NXRw?= =?utf-8?B?ZmxQc1F6S0ZjNEwzYXl6V2ZhSTVNdTFPOVJTaVVrOTBCYzduM2UzSjUwdnc1?= =?utf-8?B?eDJhUXdrYUl3VElvMEtZQUpVS0NaMmE4TU1UbFZlaFR5VW1IWHkxKzZrOFAz?= =?utf-8?B?VS9JMUJrRko5OGI2MUs5R2VzcHNOTzJyV05UYk91T01weGdMKzhuSkxDdHhk?= =?utf-8?B?UmVUVE1VVlFzeDkySmloQUFUZVBrLzN2ZW9tUGJqUXdvNmd5MTRQL09xbzg1?= =?utf-8?B?T3k0OWxJaVlaNElJcldqNG5ublQyMFNhR1lnWUd2d3czSkZzcXdtTVJZaEVN?= =?utf-8?B?TU03NVdQSGdZeS9qeWJDK2RwTVlMMm9ZNjRGaHpCRU5VU0JoNzJ2ckFRNXpD?= =?utf-8?B?YVlFUlhMMXJFQWd1dW11U3dUcEF0dG94Q1h0cDc3R3JhazRTV09ETUhBL21K?= =?utf-8?B?RWdTRm1LSUxZanp1Z1VGa3RwYmY0ZWJSTlFTanJIeENKbVFzbU9HbVNTNmlY?= =?utf-8?B?b3c1ZVk0SlB6cUZ6NGVLaWp0c0Y3YXNqN293WUt3SXZmQjVGbHJUYlVyN2Y5?= =?utf-8?B?WkxHNlVCb3FuV1ZLSmpDbit3akg1VEkydm1zMnZSZHdhMS9BQzNmVHh5Q2Qz?= =?utf-8?B?cUlqWHhFZUdSVlZ0RnFlbnErclVxOHdRcTk1SmpRb053clNtVDJ0ZVU2WFox?= =?utf-8?B?K0dWYkJjUDBjVXlCWXp0ZTFHdTBJTnI1K3owVU13allKbjNqS2ZVZVkyamNj?= =?utf-8?B?SW5PczRiN2NmUWg4OXBrYkRiT1M0SnJKblNMZlJ2dlpUcW9oU0Ivek42clVB?= =?utf-8?B?bytvWDY2YWFmZ0RBaWZDQ3U4VFpVRmpjNlVYN0tBblUzdDZONklWcEZ3aEFG?= =?utf-8?B?Y3hwZmRKVVJvZW5nbk1TK3dsMmsra0hyVjk5R0VLS09wK3hwNXVBdz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: e3345df0-68b5-4cde-8cac-08dee8e6fced X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 18:19:51.7237 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9E0ZdsGBInhZHqhTvzZEg9K19rgZFE5qyLhN6UZmP7Y/LUr1J+NSKkd8F6ZpSP/ADHi/C6QA//xBqpsfzITa8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWXP265MB2549 Attribute macros are invoked without cfg being resolved. This adds quite a bit complexity to the macro because all of the macro needs to be careful to attach necessary cfgs. This becomes especially tricky for tuple structs. Thus, it is convenient if cfgs are all resolved like derive macros. The most optimal way to handle this is via `TokenStream::expand_expr`, but that is still unstable. We can also create an internal derive macro and transform the attribute macro invocation to be derive macro, but doing requires us to serialize all extracted information in a form of helper attributes; it would also make it more difficult if we want to make changes to the struct (which the self-reference feature would need). Implement an approach where we generate two cfg-gated macro invocations with cfg resolved within the invocation. This would mean when the loop falls through, all field cfgs are resolved, so remove all handling of cfg_attrs for the rest of the macro. Signed-off-by: Gary Guo --- rust/pin-init/internal/src/pin_data.rs | 82 ++++++++++++++++++++++++++----= ---- 1 file changed, 64 insertions(+), 18 deletions(-) diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/interna= l/src/pin_data.rs index 4438107682e0..3c9d9c7364e2 100644 --- a/rust/pin-init/internal/src/pin_data.rs +++ b/rust/pin-init/internal/src/pin_data.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 OR MIT =20 use proc_macro2::TokenStream; -use quote::{format_ident, quote}; +use quote::{format_ident, quote, ToTokens}; use syn::{ parse::{End, Nothing, Parse}, parse_quote, parse_quote_spanned, spanned::Spanned, visit_mut::VisitMut, - Attribute, Field, Generics, Ident, Item, PathSegment, Type, TypePath, = Visibility, WhereClause, + Field, Fields, Generics, Ident, Item, PathSegment, Type, TypePath, Vis= ibility, WhereClause, }; =20 use crate::diagnostics::{DiagCtxt, ErrorGuaranteed}; @@ -35,10 +35,18 @@ fn parse(input: syn::parse::ParseStream<'_>) -> syn::Re= sult { } } =20 +impl ToTokens for Args { + fn to_tokens(&self, tokens: &mut TokenStream) { + match self { + Self::Nothing(_) =3D> (), + Self::PinnedDrop(kw) =3D> kw.to_tokens(tokens), + } + } +} + struct FieldInfo<'a> { field: &'a Field, pinned: bool, - cfg_attrs: Vec<&'a Attribute>, } =20 pub(crate) fn pin_data( @@ -68,6 +76,55 @@ pub(crate) fn pin_data( } }; =20 + // Handling cfg can gets very complicated, especially for tuple struct= s. Therefore, resolve all + // field cfgs first before continuing. + // + // We need to perform this after parsing so we can reliably detect fie= ld cfgs. + for (field_idx, field) in struct_.fields.iter_mut().enumerate() { + let cfg: Vec<_> =3D field + .attrs + .iter() + .filter(|a| a.path().is_ident("cfg")) + .map(|a| { + a.parse_args::() + .expect("parse as token stream cannot fail") + }) + .collect(); + + if cfg.is_empty() { + continue; + } + + field.attrs.retain(|a| !a.path().is_ident("cfg")); + let cfg_true_struct =3D quote!(#struct_); + + let punctuated =3D match &mut struct_.fields { + Fields::Named(fields) =3D> &mut fields.named, + Fields::Unnamed(fields) =3D> &mut fields.unnamed, + Fields::Unit =3D> unreachable!(), + }; + *punctuated =3D std::mem::take(punctuated) + .into_pairs() + .enumerate() + .filter(|&(i, _)| i !=3D field_idx) + .map(|(_, p)| p) + .collect(); + let cfg_false_struct =3D quote!(#struct_); + + // Resolve one field at a time until we've got no more field cfgs. + // + // This is linear time because macro invocations with false cfg wi= ll not be expanded. + return Ok(quote!( + #[cfg(all(#(#cfg,)*))] + #[::pin_init::pin_data(#args)] + #cfg_true_struct + + #[cfg(not(all(#(#cfg,)*)))] + #[::pin_init::pin_data(#args)] + #cfg_false_struct + )); + } + // The generics might contain the `Self` type. Since this macro will d= efine a new type with the // same generics and bounds, this poses a problem: `Self` will refer t= o the new type as opposed // to this struct definition. Therefore we have to replace `Self` with= the concrete name. @@ -90,16 +147,14 @@ pub(crate) fn pin_data( dcx.error(&field, "#[pin] attribute specified more than on= ce"); } =20 - let cfg_attrs =3D field - .attrs - .iter() - .filter(|a| a.path().is_ident("cfg")) - .collect(); + assert!( + !field.attrs.iter().any(|a| a.path().is_ident("cfg")), + "cfgs should be all resolved at this point" + ); =20 FieldInfo { field: &*field, pinned: pinned_count !=3D 0, - cfg_attrs, } }) .collect(); @@ -185,9 +240,7 @@ fn generate_unpin_impl( let pinned_fields =3D fields.iter().filter(|f| f.pinned).map(|f| { let ident =3D f.field.ident.as_ref().unwrap(); let ty =3D &f.field.ty; - let cfg_attrs =3D &f.cfg_attrs; quote!( - #(#cfg_attrs)* #ident: #ty ) }); @@ -280,7 +333,6 @@ fn generate_projections( .iter() .map(|field| { let Field { vis, ident, ty, .. } =3D &field.field; - let cfg_attrs =3D &field.cfg_attrs; =20 let ident =3D ident .as_ref() @@ -288,11 +340,9 @@ fn generate_projections( if field.pinned { ( quote!( - #(#cfg_attrs)* #vis #ident: ::core::pin::Pin<&'__pin mut #ty>, ), quote!( - #(#cfg_attrs)* // SAFETY: this field is structurally pinned. #ident: unsafe { ::core::pin::Pin::new_unchecked(&= mut #this.#ident) }, ), @@ -300,11 +350,9 @@ fn generate_projections( } else { ( quote!( - #(#cfg_attrs)* #vis #ident: &'__pin mut #ty, ), quote!( - #(#cfg_attrs)* #ident: &mut #this.#ident, ), ) @@ -374,7 +422,6 @@ fn generate_the_pin_data( .iter() .map(|f| { let Field { vis, ident, ty, .. } =3D f.field; - let cfg_attrs =3D &f.cfg_attrs; =20 let field_name =3D ident .as_ref() @@ -391,7 +438,6 @@ fn generate_the_pin_data( /// - `(*slot).#field_name` is properly aligned. /// - `(*slot).#field_name` points to uninitialized and ex= clusively accessed /// memory. - #(#cfg_attrs)* // Allow `non_snake_case` since the same warning will be e= mitted on // the struct definition. #[allow(non_snake_case)] --=20 2.54.0 From nobody Fri Jul 24 04:50:45 2026 Received: from LO3P265CU004.outbound.protection.outlook.com (mail-uksouthazon11020132.outbound.protection.outlook.com [52.101.196.132]) (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 97F0D1D89EF; Thu, 23 Jul 2026 18:19:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.196.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830804; cv=fail; b=NU2pa3w9l2SJECyvyrGTVajmDQJEHTSiHUC45uUbPrjcPAIYLp3wwOddQSafK/M6IK1D3X1Vc5GMB9O4nXf+wEXBlCwtPYR2RIfxhNCUx4DHRY1EvM6eQ/BuU0HCHrNmO6YNX9D0Qy8w0JgY9Exbn8XnwvpuTiw8W5URKnL++cA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830804; c=relaxed/simple; bh=cXpPUMYxcY71S/US6fmcDRcwXTiGT1dLXxWpX7YrJj4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Xbs8QtLvDbjJ6dk4BShnu5Pj1AL+Hf2e6gZ51VU+pvq5ldLXaLtwvarVlsnFsf8cM64y2+vc9BTSiUIz+/f9IiCLroJt1ZpSsTbuVqJqlS1WlPXXIqs+EtQ3JIvvwFvJy0vbwZyj/iRQTlOKL/HU63Run95q1unl3JobEpVa2m0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=jlYOixzj; arc=fail smtp.client-ip=52.101.196.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="jlYOixzj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Myj0Dm/daviEbjZPkcm2ejgworjfyAk1NdgM3pP73nRigHYYfDcnAgVFmh5Y2slvqWcdJCHEqoJEuwJSa3aiPLjQYkLWjeVS6GMuZTLF0h3brzzm9OqFRbcWtLeMSmRrLNa1JqZZXN5lH4aysqRVMV8VEJTDpX/rYvOHThfeYRDsBIk5Ezgdu1LDVO3K4DI+X5INvXkPhFdTI5rGazTULTNs/a7n7QFuMmRIZNca9uYbdMqul52zovaXqhfsSUIuGgLepxVkpMaRCRVZTxvzQudosrK4neB7NsT8DRgSUlOKGA71nuWc42xCgUrRMXHJe8b9Fd13C5CmTehFTdqtHA== 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=FkFE1akcHlYMBzud/S2uvrn0ZQ9m0tcIV5oFZDvQv8w=; b=m4LQEKGS4aPJV4+scyV2QbnriJb3Zr357Jqbauu7Mrt8QSMyVYb/+NHOSaxfex/Kw/Wx30imRdzW7F6+dvb4lyT4oOe+Zdj4b4RTKcEMhU1zQM4hUclQ2vXpEGIKyfOYFy4TsU7HEce2xZZUP6pOnTnZDHyjuS0OVomfIg4dDGLA4tlRWoNDR+7tot4Aje/CoJcagq4R/Mp4CBQ40912WxRcydHR6XfWsr6OvPl6cOI2ZhuWMOm8zY72cWsCi4orqJIKsVr0zW7m2k8/eG41p0Wg5a4pkJLJJnJM0a31NSAjDwVsLWdzIv3u+mfL5fFD2NidV8SJjjBQxGBhML8xiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FkFE1akcHlYMBzud/S2uvrn0ZQ9m0tcIV5oFZDvQv8w=; b=jlYOixzjqGqUn8DLLAfPwgZgZC/dWJPSCsvydEuPsUQitp+T/aGOXadiXjKB0Pr1AzvMxmIZOWeiUe08NI6sp74tmQ4oE7XBQ2z19XKzwY3jqWORatze2wXfjt+Drp/4tM8OwMzb0Gep93Lnbk5ke7XuSs0k1Orz3w2SEmXb2do= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWXP265MB2549.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:4e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 18:19:52 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%2]) with mapi id 15.21.0245.009; Thu, 23 Jul 2026 18:19:52 +0000 From: Gary Guo Date: Thu, 23 Jul 2026 19:19:45 +0100 Subject: [PATCH 2/3] rust: pin-init: docs: link `Zeroable::zeroed` and `pin_init::zeroed` in documentation Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-pin-init-sync-v1-2-dabe7f902cef@garyguo.net> References: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> In-Reply-To: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo , =?utf-8?q?Nicol=C3=A1s_Antinori?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784830791; l=2103; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=ssF864R81iodwCD287oZP8hV/YumxfPqKXjeu4o4t78=; b=NteBojgNBVWU9aNHF/mNu6wsk2zBb0Gr4iJIJB4dioD1s9Hn/+eE7hZUzP0zm09grUutIcqsD 5a4dCsHpgrgBtor/mFnVMoQGzY1VCJCaKlsJ1H13CAULGRJsV+4sHYM X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO3P265CA0024.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:387::19) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWXP265MB2549:EE_ X-MS-Office365-Filtering-Correlation-Id: 22d189f2-7cfc-4170-7d2d-08dee8e6fd23 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|7416014|921020|56012099006|10067099003|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: F8PV7+oIYCc/5A8I7ZvKtD6BXWuXaH9Yp86tmXK/D+C4veUSnjtvIV8jbxqD0Rh86MF96jl/vx3y6sntZzUzGskrq88uA8xWxjOWjJIpzNnjZPXJQ3RorOCTP2GUDMXClz1sfDhkG0DRsTKnujo7nP5vi9ScKdiYW2S64yd5VYE6wZ8oFAE6hA2dpIxiOUAu3sXRZvW8qlx8I994yF8uEmo93SOTh9g2Az/DbdkwWrsbfMFy/T3ZaS0rW5vsHDrbIzJr3rEq9gy+VV/Y6v8i++KypnIezcQAuhgUaBfM1JJX495BeoGlecQhUGmn7BBZtgxgnGbbFa9/mbtwTSlXlDZTvOrzsmt0HGNicK0s2vYGs4MaShbgoTPdPoGOODOtP6QrU9zFr/uf1VOywOLWDG8Ss3flYMR49ZgozYOkByBcXImTZKaDKQMZGncqrDjcsaWMzfcrF54fnw2szI+gvRdFI4EAgTAorZS+XFscHmXji8eJPycsDwrtnC49kEFAaBUJVeoVVKhlRAmmEjifwH/wKrtk+Qz4+qzOtBVSTnm3vT8sCX/Aa9E2pAKXXOw62TtEPL2Qbmd3UNBFoFHqUxTEuU1Z5QRb8Tp1eBZRbbf11rYeLviWFS2P635MjtsIVEurLeeBfUt6AGXJPstikvfjc2iTxpzo/QkuD/EhHPR28IIJFv2fYymxltVvNGmDHMUPphjRM/cOpHFFxSrGkg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(7416014)(921020)(56012099006)(10067099003)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WjdrZ2QzSXBJTUdTd3BHemd2RTl0elllZWI0VEp4L0d3cUZBdlFxQ2hCdVA0?= =?utf-8?B?NnpxNkZHaS9UYzExY1A4Z1pOVTRYeTRuOFhwOS9xQm8rWXNKV25OUDd5TjY5?= =?utf-8?B?V1VEYzFhTWFWTEo0RHZCZlFNYWZhTThDTS9mb21TZ0FodjVyQnR1cjdxQ2lh?= =?utf-8?B?SG4ycGxMaTRlVlJzLzZpZEU2eEdGNW1uY3hNNWtyZytITG45bFB6ZWpURFJW?= =?utf-8?B?aUJ2ayswRENJbFpwbkhIb2dYMTBpTG5HVWg1dkY3MHlTT1dpanRWZCtqcjRV?= =?utf-8?B?L2ZPT3FRR2ZpdW1WWlBKTlV2TTNOSDVKZHVhKzIxOXFyalpXTE16NXh5V2V6?= =?utf-8?B?MnExd3J0Vnd2MU8vamhBVlhKaHc5eVF5THhDZys5SFlONTZ2TW50U3BoSjdM?= =?utf-8?B?aCtIVkEyYUtidktlWHpTSmZJblhhTnZxOWxMbDJtT2V0VHRwenpadGV6djhC?= =?utf-8?B?R3hUK3lzZTVHQ1M4WGZzSWczb01DRDZlV00wWlRpeG9nd3I2ZGNxL3VmSmt5?= =?utf-8?B?enkyNGYvZkRpa3V4b3ZkWGZvbEU4UHp6U2FtR3hEeVBkUzRXRTNic1VOUjF3?= =?utf-8?B?MGR0bnJCVmx2SlhSdzBiSW9SNldFbXQrS29Ec045dHAyYWltQ1Q4TURiV2ZM?= =?utf-8?B?bHpTQ2Q3YlBFZ3ZjZGtCeFB1ZGpscmluY0ROVnUvQnZkd3RsNEJJQ0VzRFBM?= =?utf-8?B?N293ZG1xNTRlelVkV2NMTnVjeHA2S2d4ckFZM3RiUTFrOUZNRld2Q2FxTHpG?= =?utf-8?B?VVdQVUpSVm40N2E5YzhwT21NZXNPMFdNWDFKTHFiNmRUYTQxZzJFVjJBWDhM?= =?utf-8?B?TnpGTm5DeXBMRWU2K3NrZlVhZFAvOHQwLzBIZkxOYWFub0JZS09ma0hiSUdq?= =?utf-8?B?ZkN5OXpBYkhyd3hIcnJ3Z3BnU0w3bDNWTHNhaFAyekJvbGd0WS8rbUVnZmRj?= =?utf-8?B?ay9iZCtQMUx3U1RlbFV1d3ljQzBTcmkzbWhKNDF3UU9sdUs2R3hqNWpCWU1D?= =?utf-8?B?amJRY3VteDZQNmlkTTVKcHVQRk5rL29ZNWtZZjdsaDBHR1AxcldoZDBvTGl1?= =?utf-8?B?Q0pNbjBjMit4elF4QkRxdGpoMGl4bUNBQnA1K2JHbVdvZXdsOG56MUdqODFG?= =?utf-8?B?RmNwQk1IM3Nsc2JZVTFFSS8zZFk2bVJtaDZ1aXZpelFUaE5MQW1MOHRHQWha?= =?utf-8?B?bmFkdTY4UzZiL21IYzc4RVliM0U0eVg4Y2RoVWsyTEw5WUJDbWpBSHFHUVZi?= =?utf-8?B?VFpZRThyVVJzaTUvREtSR0xMU0dGbkorQlVlcWVBanpTajAwQTJkUmVmUTl6?= =?utf-8?B?UVdBYW9OeURRUHZaemRGUG5wYjArOHNjUEN6OHQ0enZYZnRHSGRIUEY3M1Vo?= =?utf-8?B?OUxWaXpHYmdDS0FBOTB4TTlCQVFzVmlHdVVsaWV2WitROXIzYUF6Y0FibTVG?= =?utf-8?B?dW4vdWRZZElTM1BLLzhBTjJmNHF0OGxWRUpySXV3U2RkeHB3RHRLNWxaNkFa?= =?utf-8?B?R3AxSjJtRFZHc3ZwbG9tR2dKb25YQTZ1TXhncDlsaGFqMXVVRzVTUXFJSWl6?= =?utf-8?B?aDhSM1llcjVOdmN0enZqREtXMFlQbG5DS0txWG1TK2kwQUxGMUErRlFZbS9v?= =?utf-8?B?UG4vdnVhSUx2SmRPM3NJRVhVRW1vOFJmS2oyaEd0MVM2UXZzeERlb0lYT1Ix?= =?utf-8?B?VzZBK2c1QkZxd0dvMjh6b3hkUThLdmFFRUxrbG1vQ2FvRmxJUkJ3TGhpZnVh?= =?utf-8?B?ZXQrWFRIWFpkazJXUHFVUDVnMndMM0R2b1l6UHJ2R0I2SWx5cG5kNWJLMVNS?= =?utf-8?B?TC9EUWhXUkw4Z3lOSXRhQ3VHNHBBeEVHKzY5ejBVb3hPdmk0T2Vxam1RWExD?= =?utf-8?B?eVdlUWpiQnJ5eWxzSENkVUJvYWlEZkZNZWNFQmY1cWVqM1ZDdkRuWVYrYS9t?= =?utf-8?B?SGJjcXkwUlFJYmJ3bjRQcktXZXVwa2s4emE3NjZUR2toOVZ3L0dqRjc3d2VM?= =?utf-8?B?MUt0UHdsMDFSaG1MTi9tb3RZYlN1bXVqSEd1a0YzbmM2QzN1UVJBOXowSHZU?= =?utf-8?B?WUJGR2ZiNlZocVkwOTVDUjk2Yk1DSG5qTWU3cUhvc0hhTCsyT00vUWdEZXoy?= =?utf-8?B?REQ5WTdYUDh3OGlvWThwdkJlVXdadWlFZERCTmdnTDFEOHc5Sjh3TFlSV21a?= =?utf-8?B?VERiVDZjOWhqT1QyNHdKeC9YTFZEbUFaUVJDN1FrOFVnRlg2bkVoSEFRbDVR?= =?utf-8?B?eEJDbzZkb3pUdUZMRGMwaXptSmh2YUpXMEFhMXUxaWZvR0x2K3lsSGZDdjV0?= =?utf-8?B?aFp4MUhjMnRSTUZ5cWNZTXdUTWpqT0lQLzJrUUFLV2tKcU14UDZYUT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 22d189f2-7cfc-4170-7d2d-08dee8e6fd23 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 18:19:52.1012 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: S8y9OaDIfYXXsFJUjAnmERre802S4Pbw/SXuG68cJMZgryybpDknNuvcEQeo/HZospbqLeKZTBbyc7jw4jq3fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWXP265MB2549 From: Nicol=C3=A1s Antinori Modify the comments in the `pin_init::zeroed` and `Zeroable::zeroed` functions to cross-reference each other and make developers aware of both options. This also adapts the example code in `Zeroable::zeroed` doc comments to use that function. Suggested-by: Miguel Ojeda Link: https://lore.kernel.org/rust-for-linux/CANiq72kdCAyRUmXFcqQfkHpk1miG8= Gagsn0_5U8p4WpKxv9d_g@mail.gmail.com/ Signed-off-by: Nicol=C3=A1s Antinori [ Fix link. - Gary ] Signed-off-by: Gary Guo --- rust/pin-init/src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs index ef9f20b11034..1f5005c110cd 100644 --- a/rust/pin-init/src/lib.rs +++ b/rust/pin-init/src/lib.rs @@ -1539,10 +1539,13 @@ fn init_zeroed() -> impl Init /// Whenever a type implements [`Zeroable`], this function should be p= referred over /// [`core::mem::zeroed()`] or using `MaybeUninit::zeroed().assume_= init()`. /// + /// As const traits are not yet stable, [`pin_init::zeroed()`] can be = used instead + /// when initialization is required in a `const` context. + /// /// # Examples /// /// ``` - /// use pin_init::{Zeroable, zeroed}; + /// use pin_init::Zeroable; /// /// #[derive(Zeroable)] /// struct Point { @@ -1550,7 +1553,7 @@ fn init_zeroed() -> impl Init /// y: u32, /// } /// - /// let point: Point =3D zeroed(); + /// let point: Point =3D Zeroable::zeroed(); /// assert_eq!(point.x, 0); /// assert_eq!(point.y, 0); /// ``` @@ -1582,6 +1585,9 @@ pub fn init_zeroed() -> impl Init { /// Whenever a type implements [`Zeroable`], this function should be prefe= rred over /// [`core::mem::zeroed()`] or using `MaybeUninit::zeroed().assume_init= ()`. /// +/// While const traits remain unstable, this function serves as the `const= ` version of +/// [`Zeroable::zeroed()`]. +/// /// # Examples /// /// ``` --=20 2.54.0 From nobody Fri Jul 24 04:50:45 2026 Received: from LO3P265CU004.outbound.protection.outlook.com (mail-uksouthazon11020132.outbound.protection.outlook.com [52.101.196.132]) (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 B81293BB9F7; Thu, 23 Jul 2026 18:20:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.196.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830829; cv=fail; b=n/ZR15dkUGEv7+b42z1+Hd6zc1w48ObHZGhDZsraEeZoRobqo987N2CHh0kfhcX3bLem9+LUFSBrahlC0xehpWo/nQ+GKZ6eVXQMKKs7b/a40YWLYQSZERDKCGqrT0OVWMMpZ+1SJeZCmbuzK+lrwN3GYUvskY/GgAFNOGUv8lw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830829; c=relaxed/simple; bh=7css306sgrdJeV2+YFTROdCI8hodSyeHljpWzK5Vzv4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=FX5e/sJ28dFup8J69G56rLBwoO/R9kQIcgzKwEy0xYrlzPBvQL46Z++yevJ2OcZJvLvvaN4Pp0ju4oNyYLRw3XXBgoeU8l2RXx7QCUJk2SCo4uLKBZ6EybO5TZ154hnGJZZOocuiLRBVjTYfSohvQXFGWfj5TycwHNS4wXgJx3A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=MFTwVm+D; arc=fail smtp.client-ip=52.101.196.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="MFTwVm+D" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cUVl6tvvSsT2kyZTQDa/gJrJW18dcwwnApImy5V+G2uRxq/k73g/SDerR1XhM9ij5IZdzgiJ8DcDxYsXKAGY9/2+PCmjPE8LN6MUnc31D+awugSRTX7IR3FxfrL73x86aPCaDpUu4u5tztpIkmZAUUmpxGlJfuzfswinmCGHkaZR/9emMTuc7a4iMPZRfLskhh2nJVCIm/u+Ai5hRgn6iHrwsdRyfKhIZjUYGT7ivjuyLpo46SCygfn3SnR26+vlLTfeLXOfF7Qq4OV/yeZAFG4O2Ju8lJIj1fZk3jHkaLYxLfl+C0fGYHg/5KWOPSFL1Dbk4sbKLN+O1cZ0BCPv6w== 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=bNJeCrgH1rz45kdi/tuR+rYUtiEEXma/MATu1kaQ2t4=; b=ZF7J5zLt9Y4YlLOKntJ9jLSENpzMvYZ/4GmygzdQNUSWNfC76Id6sJjiSgYEy2UirECBg7A7U0bRM8+2evdrwrQVT8bkMu34E1yqoEr1x9VQNnUoTu1CqCa5vRC0PUMXXkQDRbvTMRF1m2ROXkoJHhyYJBvpmRz+tRwMeM2S5JMyRM2WuYSWgJIrUR65/fL+m1C5W5RjG/fkuklIl+SdZX2TrcIZ1eV+WwuAubjwfu5GpEBtPjTlf4jZQ3+AbYm6qj16VVrYgs2ORX0553QSO0XN44Q6Xd8Uo8/TR7iLAUHmxZcc5g5Ol33pZUXZpv9mSFyZWGQp8lni2Co2tF9ZwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bNJeCrgH1rz45kdi/tuR+rYUtiEEXma/MATu1kaQ2t4=; b=MFTwVm+D4hQkxMANwwikC6b1HP9m4sFIO6XzHbARKh0a1RKfUACznTGXxGZOTZml0w+5sS2YVAKNp4LPrejsTCHnFWnrfTDL8LQCysWQIBvesYwGv6vvvEt7J23BF24XU7mdbwxkFrro0VshnPqOKIpOuhZTevsquuZEuVHPgWU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by CWXP265MB2549.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:4e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Thu, 23 Jul 2026 18:19:52 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%2]) with mapi id 15.21.0245.009; Thu, 23 Jul 2026 18:19:52 +0000 From: Gary Guo Date: Thu, 23 Jul 2026 19:19:46 +0100 Subject: [PATCH 3/3] rust: pin-init: mark `pin_init::zeroed` and `Zeroable::zeroed` as `#[inline]` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-pin-init-sync-v1-3-dabe7f902cef@garyguo.net> References: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> In-Reply-To: <20260723-pin-init-sync-v1-0-dabe7f902cef@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo , =?utf-8?q?Nicol=C3=A1s_Antinori?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784830791; l=1175; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=gMfjoDWcA8CQOtvOwGpRy8lWOHXXcb8+pOUzUzU3gSU=; b=ixHuMmHAXbIIb9TfpCEsX6zNXlyMacOpOHjWbhUsBMiaL1QaFW9NnsoCL9PA6qEIkf6fFYscj oOoMlZ7MsPqCXbvbzQSFWbcvN4tj6EW2UjWyvXaIziWjm9JeuJco/oZ X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO3P265CA0024.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:387::19) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) 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: LOVP265MB8871:EE_|CWXP265MB2549:EE_ X-MS-Office365-Filtering-Correlation-Id: 6072b307-2bb2-418e-8344-08dee8e6fd55 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|10070799003|366016|376014|7416014|921020|56012099006|10067099003|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZgjJuGvTD2vbg65uUctIWIhTU9IFyjTeW1Bx8LXVVtV5NePqfNyUulIugTcLfowRhC5EbtWzEE72uNykFoxZWua41E0iVZWTxkOk+o4OH6wEaMY+1kuNp2um6eepubEcZxIf039+uxgpEfHpb7tlu4VRXG2mFocBSZMjhZ3t6VAi1eN8iQGlge4pGmMe+J7fWgorI8hCIxgfypNzkNZpiykQG9Tie8bBFjB/+IFrq//zpusI2vHPxeHR4RKn5jsS+qNKqEWb49145RamkX6QKLMsrQVXULN5V07L0b5m0/zwF0VjDu2wx9UZhzG+7BrzFTwopG9LrSgV38J3TWNfMsTl6T5ZtIR1SGQe3DyVP+kicAlUtP+ON7B2Auk68eCL6f5lR6CZNY1f/kkqav2DYKm+okhAdLU6/JpnBtcgEDnOt2m37T270BYj1y22MZfGcXr761XoqK8WZ5+HST8sSDJTDfm7LUmEm8cNAfp7E+9JHb/PamzGCe25MOS963H2Qewvvw0YvIaszKjtJZZIxExN5UM1bZRzyKfGA2Vmqv5y1T24UcNvKLxQ1lE8eZYBmAmGzWw39XoABGhpLsPX/ICMTsBn3reRS4kwx5fgV1PLZbAj0iNqyTxe3Aoj2a97vyp2EB6oL84UWGiNuIgemf9iKjyFDAQSw2QG9QsB/WAIXwis19tag0eWsSkUNhcxSYUHC6PzlQpnVQ7wFyAWMQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(23010399003)(10070799003)(366016)(376014)(7416014)(921020)(56012099006)(10067099003)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OGlIUGZXTVM3MkZiWW5qdU5hdnBCc3A3ZzVWVmVvSXNIaTJOZ3k4cW9SWHoy?= =?utf-8?B?Sm8zMnI4aDhkL09zeVIzeXlUWXRJcmliaEJucWxDT1lodkxKTmVrT1ExYUFK?= =?utf-8?B?dnNhOWxJeGdvbjFWZmFQK2hwVjJ1SmRNSno1QzQ5TWNpaDBHdGZKc1d0YStm?= =?utf-8?B?QUhsVUM4cWwwWVU3Y1F5Y0FBY09HNTVjOHNpU2JzcFN2M3ZuWkJyVVVXbkdG?= =?utf-8?B?SjZWVjFUcEJiSDBoelVtUGpBd0dveTBzcDFJZzBlQkhNME5nZzJ3cUovMGpR?= =?utf-8?B?bkQ5anFmRUFHVkJmU3ZmMGtGSlhnSDRocEZRUFRnQlNFSzZlUlY1ckh3RXFL?= =?utf-8?B?S0xVb0lNcytvWmNTQ3NKbHNtSFVwTzJqd3ozVnMyUXRSdEQrRWVWMExmekFl?= =?utf-8?B?OG9xRUFkL1BIc291cXN2dndCYlZpdG96UzRLTkY4aGptdkdHZXFGQUtYNDNX?= =?utf-8?B?UDRWU1JBZ05YN1FrR0RGMG9CamloKy9sUHBoSUpxcXovWjlUVXhKMld2T1Zn?= =?utf-8?B?bmFtbysxb2g4QjRSam1uVzl5cTMzdWJjaTNIbUNydlhSR3pkWUZkLzJnK2lO?= =?utf-8?B?TEZhcmluWE1RRy9RWENxUnJva2NLVHYvZmFld0FHaDlUVXhYN0EyY0tkRE9y?= =?utf-8?B?NmNzSVJ3bWRDZkdwenJyRXg1bHptRWlBU1k0YnlTRTdCVkFEQ1hTbllybmdj?= =?utf-8?B?S3pxOHMreUJPREx3aXJ6V1VwMzdVMTdkaGxEYTRwTDJudU9jTWZZRjVRRkZ5?= =?utf-8?B?SVozWUp6cXFBTEZ6blZPcmsxa3pOTGV0RnRIUXAxb3Q4MGsxR1A1SXVNSXJ5?= =?utf-8?B?VEU5OEZxVHJ6MVVaaXRkRkNIYzJoL0hITEY1NTFYWlFvTi9Za3JDbTRldEg2?= =?utf-8?B?TGRzZkZHNXNySzRyek82YldMNzBaL2pTaWpoYnE2aWZzOUFmdFl2aEkrb05Y?= =?utf-8?B?M2duS2IySmJvQStLcFFFalFCbHdYUGw2U29pMnE4NXpDa1E0VW5aVklOWjVW?= =?utf-8?B?eU5yUGdRWmdsM2RvYXJLUFhGRnM3U1N0cytza3dOMWhxVTYwK1VhRGh3MVNV?= =?utf-8?B?MW8wNTBkQ2p2bCtxZUdvMUJUU3dPU05aLzJ1bHpoZ0V3a1R3YzBUMEJoNmIr?= =?utf-8?B?V0NFWi9ERXVpQVNNQ1FUZjZpZ005OUJKYXFjQlM3aGNxZWw1T2ptblV3Q1lN?= =?utf-8?B?Y0pWZmV4RDVSR2Fxa0lidzA0eUFaV0FMd29xbTR2eTFmRmlTVkpPendPcDZG?= =?utf-8?B?dlhzZHFVTkNlTFYzY3B0VWt0V2IwN2tYcU5qSXZ4VzU1bW5OeW5PN1A5ZTVr?= =?utf-8?B?elBHeng0MmR1VWRCM3ROUGlISGY1L2N1YkJJOUhTN2pzQit3K3B4cTYxT3pP?= =?utf-8?B?T2xtRFM1LzUrVytqMUYydDk2VDMrZ1RxOWlGTEF2Z2c1SUlOdkVDU1Z0K1M5?= =?utf-8?B?ZFZjTkxXV2pYVGpOcFhtcHNZNDZJZm10dmtYMnZQRitydzBaejFVdVUxcHZr?= =?utf-8?B?Y1UwQ0VBZU0xcUNROGgydzRvS2R0NDZKNGUwRVpNN0dzOU9QR1Q5VFg4VXho?= =?utf-8?B?bm5VQlZBdExGeFVWZEErZGxWMlFuSUZ2alAzSldRNWJRdC8vNE0ydEFIQXJ5?= =?utf-8?B?MEgvWTNBWkozRHVXWVlDYXM5WXg3V3BpeUNteklTSnlPQWEyUUR6K3cyVks3?= =?utf-8?B?aE01VFBGSmNtL1RpWitjaWIycFNXYlN5NXNsdUhDSUVEQkhjeTdsNFBuUTdQ?= =?utf-8?B?N1RicVpGVCtUTTNSbjJxaWZYRm0xZHp4NUZ0bXZrNTh4THlqWXZpakg4MmJp?= =?utf-8?B?L1JvbS9jV08ycytFOC9xdlJJcHFCUlJkc0pKTzRzUUNLeVZzaDJBWUYzNWRK?= =?utf-8?B?TlMxWXEwbUIxZEI4di9MOEkzdy9pNmVJWVVrT3dheG5ITWNpZUtTTDJMd3dH?= =?utf-8?B?U1V1TmRmL3NGcUl0SVpJYjRnRnBSakxBQytKMmg4TGJFM1NvMGplbU54c2JH?= =?utf-8?B?OWdYcHJuSDMrOERsWmlTK1daU3llOXFwa0pmc3JPRnF3SndKUnJmRmsyTjly?= =?utf-8?B?bytuNy9tNUM4L3hyNklOWDFQMG9uS1d5OXFhWUM1RHhvaHFRN2RtbXQvM2Nw?= =?utf-8?B?eTRWMER2Rkw0S2tOVDNwbHpIbzREOEdqWUxkKzc1T25XMTlCYmorY2NGVFA3?= =?utf-8?B?T1RqUEI2NmVEaHdQdU1hOUwyRG1US0k5L0RrdE1EYklqcWVrTHlNaHY0aVRi?= =?utf-8?B?SnpoOXJFS1R2ZlJDcFZJOVg1NU9GckxVODk5dkQvQWI1cHpkdmxoTlN6WUF3?= =?utf-8?B?VTlHSHBEenFPa3BNNUdnWDlLRFR4ako0ajFZUTlncnphRzRkdWw2QT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 6072b307-2bb2-418e-8344-08dee8e6fd55 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2026 18:19:52.4131 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aHj5vf0QSHxJUL5mJcl6imHr9Un/Hon5PijI1OM8OnSuRwXeKOG0Op2XO+Q03JXdSrppuk+3NqH3w0P7E5FtNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWXP265MB2549 From: Nicol=C3=A1s Antinori The `pin_init::zeroed` function is a trivial wrapper around `unsafe { core::mem::zeroed() }`, whereas `Zeroable::zeroed` is a trivial wrapper around `pin_init::zeroed`. Mark them both as `#[inline]` to avoid generating unnecessary symbols for them. Signed-off-by: Nicol=C3=A1s Antinori Signed-off-by: Gary Guo --- rust/pin-init/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs index 1f5005c110cd..f4ccb0e87200 100644 --- a/rust/pin-init/src/lib.rs +++ b/rust/pin-init/src/lib.rs @@ -1557,6 +1557,7 @@ fn init_zeroed() -> impl Init /// assert_eq!(point.x, 0); /// assert_eq!(point.y, 0); /// ``` + #[inline] fn zeroed() -> Self where Self: Sized, @@ -1603,6 +1604,7 @@ pub fn init_zeroed() -> impl Init { /// assert_eq!(point.x, 0); /// assert_eq!(point.y, 0); /// ``` +#[inline] pub const fn zeroed() -> T { // SAFETY:By the type invariants of `Zeroable`, all zeroes is a valid = bit pattern for `T`. unsafe { core::mem::zeroed() } --=20 2.54.0