rust: zerocopy: update to v0.8.54
Miguel Ojeda
maintainerPATCH 1/1 rust: zerocopy: update to v0.8.54
Update our vendored copy of zerocopy (and zerocopy-derive) to v0.8.54.
It is a very small delta from v0.8.52, and most importantly it resolves the unexpected lack of inlining [1] which triggered a modpost error under CONFIG_CC_OPTIMIZE_FOR_SIZE=y reported by Alexandre using Gary's suggestion [2]:
ERROR: modpost: "_RNvMNtCs5wX7wwEUCR9_8zerocopy6layoutNtB2_8SizeInfo24try_to_nonzero_elem_size" [drivers/gpu/nova-core.ko] undefined!
ERROR: modpost: "_RNvNtCs5wX7wwEUCR9_8zerocopy4util18padding_needed_for" [drivers/gpu/nova-core.ko] undefined!
It also resolves most_traits being unexpectedly documented [3] that I reported and adds a missing SPDX license identifier [4] that I requested to match the kernel version.
The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do
curl --silent --show-error --location \
https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/zerocopy-derive/src/$path |
git diff --no-index - rust/zerocopy-derive/$path &&
echo $path: OK
done
for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do
curl --silent --show-error --location \
https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/$path |
git diff --no-index - rust/zerocopy/$path &&
echo $path: OK
done---
This goes on top of the v0.8.52 one:
https://lore.kernel.org/rust-for-linux/[email protected]/
I may land both in rust-fixes, especially if someone else can confirm it works for them (I reproduced Alexandre's issue and this does indeed solve it).
rust/Makefile | 2 +- rust/zerocopy-derive/README.md | 12 ++++++------ rust/zerocopy-derive/lib.rs | 2 +- rust/zerocopy/README.md | 12 ++++++------ rust/zerocopy/rustdoc/style.css | 1 - rust/zerocopy/src/byteorder.rs | 1 + rust/zerocopy/src/layout.rs | 2 ++ rust/zerocopy/src/lib.rs | 1 - rust/zerocopy/src/util/mod.rs | 6 ++++++ 9 files changed, 23 insertions(+), 16 deletions(-)
rust/Makefile +1 -1
@@ -92,7 +92,7 @@ zerocopy-flags := \ $(call cfgs-to-flags,$(zerocopy-cfgs)) zerocopy-envs := \ - CARGO_PKG_VERSION=0.8.52 + CARGO_PKG_VERSION=0.8.54 proc_macro2-cfgs := \ feature="proc-macro" \
rust/zerocopy-derive/README.md +6 -6
@@ -1,14 +1,14 @@ # `zerocopy-derive` -These source files come from the Rust `zerocopy-derive` crate, version v0.8.52 -(released 2026-06-09), hosted in the <https://github.com/google/zerocopy> +These source files come from the Rust `zerocopy-derive` crate, version v0.8.54 +(released 2026-07-08), hosted in the <https://github.com/google/zerocopy> repository, licensed under "BSD-2-Clause OR Apache-2.0 OR MIT" and only modified to tweak the SPDX license identifiers and to remove the generation of non-ASCII identifiers. For copyright details, please see: - https://github.com/google/zerocopy/blob/v0.8.52/README.md?plain=1 - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-BSD - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-APACHE - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-MIT + https://github.com/google/zerocopy/blob/v0.8.54/README.md?plain=1 + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-BSD + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-APACHE + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-MIT
rust/zerocopy-derive/lib.rs +1 -1
@@ -129,7 +129,7 @@ fn into_ts(self) -> proc_macro2::TokenStream {derive! (ByteEq => derive_eq =>crate ::derive::derive_eq);derive! (SplitAt => derive_split_at =>crate ::derive::derive_split_at); -#[cfg_attr(zerocopy_unstable_linux, doc(hidden))] +#[cfg_attr(not(zerocopy_unstable_linux), doc(hidden))] #[proc_macro_derive(most_traits, attributes(zerocopy))] pub fn most_traits (ts: proc_macro::TokenStream ) -> proc_macro::TokenStream {let ast = syn::parse_macro_input!(tsas DeriveInput );
rust/zerocopy/README.md +6 -6
@@ -1,13 +1,13 @@ # `zerocopy` -These source files come from the Rust `zerocopy` crate, version v0.8.52 -(released 2026-06-09), hosted in the <https://github.com/google/zerocopy> +These source files come from the Rust `zerocopy` crate, version v0.8.54 +(released 2026-07-08), hosted in the <https://github.com/google/zerocopy> repository, licensed under "BSD-2-Clause OR Apache-2.0 OR MIT" and only modified to tweak the SPDX license identifiers. For copyright details, please see: - https://github.com/google/zerocopy/blob/v0.8.52/README.md?plain=1 - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-BSD - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-APACHE - https://github.com/google/zerocopy/blob/v0.8.52/LICENSE-MIT + https://github.com/google/zerocopy/blob/v0.8.54/README.md?plain=1 + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-BSD + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-APACHE + https://github.com/google/zerocopy/blob/v0.8.54/LICENSE-MIT
rust/zerocopy/rustdoc/style.css +0 -1
@@ -1,5 +1,4 @@ /* SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT */ - /* Copyright 2026 The Fuchsia Authors
rust/zerocopy/src/byteorder.rs +1 -0
@@ -100,6 +100,7 @@ impl Sealed for super::LittleEndian {}#[allow(missing_copy_implementations, missing_debug_implementations)] #[doc(hidden)] +#[derive( PartialEq )] pub enum Order {BigEndian ,LittleEndian ,
rust/zerocopy/src/layout.rs +2 -0
@@ -71,6 +71,8 @@ impl SizeInfo {/// Attempts to create a `SizeInfo` from `Self` in which `elem_size` is a /// `NonZeroUsize`. If `elem_size` is 0, returns `None`. #[allow(unused)] +#[cfg_attr(not(zerocopy_inline_always), inline)] +#[cfg_attr(zerocopy_inline_always, inline(always))] const fn try_to_nonzero_elem_size (&self) ->Option <SizeInfo <NonZeroUsize >> {Some (match *self {SizeInfo ::Sized { size } =>SizeInfo ::Sized { size },
rust/zerocopy/src/lib.rs +0 -1
@@ -435,7 +435,6 @@WARNING }; -#[doc(hidden)] #[cfg(all(any(feature = "derive" , test), zerocopy_unstable_linux))] pub use zerocopy_derive::most_traits;/// Implements [`KnownLayout`].
rust/zerocopy/src/util/mod.rs +6 -0
@@ -150,6 +150,8 @@ pub(crate) fn validate_aligned_to<T: AsAddress, U>(t: T) -> Result<(), Alignment// Ensures that we add the minimum required padding. kani::ensures(|&p| p < align.get()), )] +#[cfg_attr(not(zerocopy_inline_always), inline)] +#[cfg_attr(zerocopy_inline_always, inline(always))] pub (crate )const fn padding_needed_for (len:usize , align:NonZeroUsize ) ->usize {#[cfg(kani)] #[kani::proof_for_contract(padding_needed_for)]
@@ -251,6 +253,8 @@ fn proof() { n & mask } +#[cfg_attr(not(zerocopy_inline_always), inline)] +#[cfg_attr(zerocopy_inline_always, inline(always))] pub (crate )const fn max (a:NonZeroUsize , b:NonZeroUsize ) ->NonZeroUsize {if a.get () < b.get () { b
@@ -259,6 +263,8 @@ pub(crate) const fn max(a: NonZeroUsize, b: NonZeroUsize) -> NonZeroUsize { } } +#[cfg_attr(not(zerocopy_inline_always), inline)] +#[cfg_attr(zerocopy_inline_always, inline(always))] pub (crate )const fn min (a:NonZeroUsize , b:NonZeroUsize ) ->NonZeroUsize {if a.get () > b.get () { b
--
2.55.0
Quoted 30 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.54.It is a very small delta from v0.8.52, and most importantly it resolves the unexpected lack of inlining [1] which triggered a modpost error under
CONFIG_CC_OPTIMIZE_FOR_SIZE=yreported by Alexandre using Gary's suggestion [2]:ERROR: modpost: "
_RNvMNtCs5wX7wwEUCR9_8zerocopy6layoutNtB2_8SizeInfo24try_to_nonzero_elem_size" [drivers/gpu/nova-core.ko] undefined!
ERROR: modpost: "_RNvNtCs5wX7wwEUCR9_8zerocopy4util18padding_needed_for" [drivers/gpu/nova-core.ko] undefined!It also resolves
most_traitsbeing unexpectedly documented [3] that I reported and adds a missing SPDX license identifier [4] that I requested to match the kernel version.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 9 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Reported-by Alexandre Courbot <[email protected]>Suggested-by Gary Guo <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>
Quoted 19 lines
---
This goes on top of the v0.8.52 one:https://lore.kernel.org/rust-for-linux/[email protected]/
I may land both in
rust-fixes, especially if someone else can confirm it works for them (I reproduced Alexandre's issue and this does indeed solve it).rust/Makefile | 2 +- rust/zerocopy-derive/README.md | 12 ++++++------ rust/zerocopy-derive/lib.rs | 2 +- rust/zerocopy/README.md | 12 ++++++------ rust/zerocopy/rustdoc/style.css | 1 - rust/zerocopy/src/byteorder.rs | 1 + rust/zerocopy/src/layout.rs | 2 ++ rust/zerocopy/src/lib.rs | 1 - rust/zerocopy/src/util/mod.rs | 6 ++++++ 9 files changed, 23 insertions(+), 16 deletions(-)
Quoted 30 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.54.It is a very small delta from v0.8.52, and most importantly it resolves the unexpected lack of inlining [1] which triggered a modpost error under
CONFIG_CC_OPTIMIZE_FOR_SIZE=yreported by Alexandre using Gary's suggestion [2]:ERROR: modpost: "
_RNvMNtCs5wX7wwEUCR9_8zerocopy6layoutNtB2_8SizeInfo24try_to_nonzero_elem_size" [drivers/gpu/nova-core.ko] undefined!
ERROR: modpost: "_RNvNtCs5wX7wwEUCR9_8zerocopy4util18padding_needed_for" [drivers/gpu/nova-core.ko] undefined!It also resolves
most_traitsbeing unexpectedly documented [3] that I reported and adds a missing SPDX license identifier [4] that I requested to match the kernel version.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 9 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Reported-by Alexandre Courbot <[email protected]>Suggested-by Gary Guo <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>
Quoted 30 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.54.It is a very small delta from v0.8.52, and most importantly it resolves the unexpected lack of inlining [1] which triggered a modpost error under
CONFIG_CC_OPTIMIZE_FOR_SIZE=yreported by Alexandre using Gary's suggestion [2]:ERROR: modpost: "
_RNvMNtCs5wX7wwEUCR9_8zerocopy6layoutNtB2_8SizeInfo24try_to_nonzero_elem_size" [drivers/gpu/nova-core.ko] undefined!
ERROR: modpost: "_RNvNtCs5wX7wwEUCR9_8zerocopy4util18padding_needed_for" [drivers/gpu/nova-core.ko] undefined!It also resolves
most_traitsbeing unexpectedly documented [3] that I reported and adds a missing SPDX license identifier [4] that I requested to match the kernel version.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 9 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Reported-by Alexandre Courbot <[email protected]>Suggested-by Gary Guo <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>
Miguel Ojeda
AppliedQuoted 31 lines · Miguel Ojeda
Update our vendored copy of
zerocopy(andzerocopy-derive) to v0.8.54.It is a very small delta from v0.8.52, and most importantly it resolves the unexpected lack of inlining [1] which triggered a modpost error under
CONFIG_CC_OPTIMIZE_FOR_SIZE=yreported by Alexandre using Gary's suggestion [2]:ERROR: modpost: "
_RNvMNtCs5wX7wwEUCR9_8zerocopy6layoutNtB2_8SizeInfo24try_to_nonzero_elem_size" [drivers/gpu/nova-core.ko] undefined!
ERROR: modpost: "_RNvNtCs5wX7wwEUCR9_8zerocopy4util18padding_needed_for" [drivers/gpu/nova-core.ko] undefined!It also resolves
most_traitsbeing unexpectedly documented [3] that I reported and adds a missing SPDX license identifier [4] that I requested to match the kernel version.The following script may be used to check for the remaining differences:
for path in $(cd rust/zerocopy-derive/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/zerocopy-derive/src/$path | git diff --no-index - rust/zerocopy-derive/$path && echo $path: OK done for path in $(cd rust/zerocopy/ && find . -type f ! -name README.md); do curl --silent --show-error --location \ https://github.com/google/zerocopy/raw/v0.8.54/zerocopy/$path | git diff --no-index - rust/zerocopy/$path && echo $path: OK done
Quoted 9 lines
Cc Joshua Liebow-Feeser <[email protected]>Cc Jack Wrenn <[email protected]>Reported-by Alexandre Courbot <[email protected]>Suggested-by Gary Guo <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>
Applied to rust-fixes -- thanks everyone for giving it a quick look, I appreciate it!
Tags still welcome for a couple days (also for the v0.8.52 one, which only had an Acked-by).
I changed one of the Link:s to Closes:.
@Gary: I didn't include here the change to avoid linking since I thought that would be best through rust-next as a separate commit and in case you wanted to send it yourself, but I think it could still be interesting to check/guarantee.
Cheers,
Miguel