mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
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
Cc: Joshua Liebow-Feeser <joshlf@google.com>
Cc: Jack Wrenn <jswrenn@google.com>
Reported-by: Alexandre Courbot <acourbot@nvidia.com>
Closes: https://lore.kernel.org/rust-for-linux/20260708-zerocopy-export-v1-1-2bfc355853c6@nvidia.com/ [1]
Suggested-by: Gary Guo <gary@garyguo.net>
Link: https://lore.kernel.org/rust-for-linux/DJT6235B3DOV.222XR5O6VHG4M@garyguo.net/ [2]
Link: https://github.com/google/zerocopy/issues/3466 [3]
Link: https://github.com/google/zerocopy/issues/3457 [4]
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Tested-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260709211311.142544-1-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
2808a39639
commit
425e10586c
|
|
@ -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" \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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!(ts as DeriveInput);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
/* SPDX-License-Identifier: (BSD-2-Clause OR Apache-2.0) OR MIT */
|
||||
|
||||
/*
|
||||
Copyright 2026 The Fuchsia Authors
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
|
|
|
|||
|
|
@ -435,7 +435,6 @@
|
|||
WARNING
|
||||
};
|
||||
|
||||
#[doc(hidden)]
|
||||
#[cfg(all(any(feature = "derive", test), zerocopy_unstable_linux))]
|
||||
pub use zerocopy_derive::most_traits;
|
||||
/// Implements [`KnownLayout`].
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user