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: <CAJ-ks9=CXCuE+NDnu_SsFwQKLsc4yz+GuRh4pD=DQ-7KFdaOPA@mail.gmail.com>
Date: Tue, 13 Jan 2026 09:23:38 -0500
From: Tamir Duberstein <tamird@...il.com>
To: 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 9:09 AM Gary Guo <gary@...yguo.net> wrote:
>
> 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?

I think extracting the duplication is still worthwhile, and we might
need this elsewhere so I'd leave it in the helpers module. I don't
feel strongly though, so go with your preference.

>
> Best,
> Gary

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ