lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <DFNIS32ARBRQ.1842L2438YTMB@garyguo.net>
Date: Tue, 13 Jan 2026 14:09:46 +0000
From: "Gary Guo" <gary@...yguo.net>
To: "Tamir Duberstein" <tamird@...il.com>, "Gary Guo" <gary@...yguo.net>
Cc: "Miguel Ojeda" <ojeda@...nel.org>, "Boqun Feng" <boqun.feng@...il.com>,
 Björn Roy Baron <bjorn3_gh@...tonmail.com>, "Benno Lossin"
 <lossin@...nel.org>, "Andreas Hindborg" <a.hindborg@...nel.org>, "Alice
 Ryhl" <aliceryhl@...gle.com>, "Trevor Gross" <tmgross@...ch.edu>, "Danilo
 Krummrich" <dakr@...nel.org>, <rust-for-linux@...r.kernel.org>,
 <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] rust: macros: support `#[cfg]` properly in `#[vtable]`
 macro.

On Tue Jan 13, 2026 at 1:39 PM GMT, Tamir Duberstein wrote:
> On Tue, Jan 13, 2026 at 8:11 AM Gary Guo <gary@...nel.org> wrote:
>>
>> From: Gary Guo <gary@...yguo.net>
>>
>> Currently, we generate `HAS_` constants as long as the definition exists in
>> the source, regardless if it is cfg-ed out or not.
>>
>> Currently, uses of `#[cfg]` present in both trait and impl, so it is not a
>> problem; however if only the impl side uses `#[cfg]` then `HAS_` constants
>> will incorrectly be true while it shouldnt't.
>>
>> With `syn` support, we can now implement `#[cfg]` handling properly by
>> propagating the `#[cfg]` attributes to the constants.
>>
>> Signed-off-by: Gary Guo <gary@...yguo.net>
>> ---
>>  rust/macros/helpers.rs |  6 ++++++
>>  rust/macros/vtable.rs  | 13 ++++---------
>>  2 files changed, 10 insertions(+), 9 deletions(-)
>>
>> diff --git a/rust/macros/helpers.rs b/rust/macros/helpers.rs
>> index adfa60d8f42d8..11117b4c95d25 100644
>> --- a/rust/macros/helpers.rs
>> +++ b/rust/macros/helpers.rs
>> @@ -7,6 +7,7 @@
>>          Parse,
>>          ParseStream, //
>>      },
>> +    Attribute,
>>      Error,
>>      LitStr,
>>      Result, //
>> @@ -53,3 +54,8 @@ pub(crate) fn file() -> String {
>>          proc_macro::Span::call_site().file()
>>      }
>>  }
>> +
>> +/// Obtain all `#[cfg]` attributes.
>> +pub(crate) fn gather_cfg_attrs(attr: &[Attribute]) -> impl Iterator<Item = Attribute> + '_ {
>> +    attr.iter().filter(|a| a.path().is_ident("cfg")).cloned()
>> +}
>
> There's also no need to clone; `ToTokens::to_tokens` takes `&self`.
>
> https://docs.rs/quote/latest/quote/trait.ToTokens.html#tymethod.to_tokens

Indeed. In that case I feel like the line is short enough and we can just inline
these and skip the helper function?

Best,
Gary

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ