Re: [linux-next:master 4752/13171] error[E0609]: no field `__bindgen_anon_1` on type `bindings::kernel_param`

Daniel Gomez
2025-12-02T21:02:05Z

On 01/12/2025 21.20, kernel test robot wrote:
> Hi Andreas,
>
> FYI, the error/warning still remains.
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head: 95cb2fd6ce0ad61af54191fe5ef271d7177f9c3a
> commit: 0b08fc292842a13aa496413b48c1efb83573b8c6 [4752/13171] rust: introduce module_param module
> config: arm64-randconfig-001-20251202 (https://download.01.org/0day-ci/archive/20251202/202512020454.Tf36WHw5-lkp@intel.com/config)
> compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project b3428bb966f1de8aa48375ffee0eba04ede133b7)
> rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251202/202512020454.Tf36WHw5-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202512020454.Tf36WHw5-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
>>> error[E0609]: no field `__bindgen_anon_1` on type `bindings::kernel_param`
> --> rust/kernel/module_param.rs:78:46
> |
> 78 | let container = unsafe { &*((*param).__bindgen_anon_1.arg.cast::<SetOnce<T>>()) };
> | ^^^^^^^^^^^^^^^^ unknown field
> |
> = note: available field is: `_address`
>

I can't replicate this issue either.

I've added these patches to fix other unrelated build issues, so, I'm not sure
how 0day ended up skipping them? Perhaps it uses head 95cb2fd6c? + bisect?

a74b6c0e53a6d um: Don't rename vmap to kernel_vmap
f74cf399e02e2 rust: debugfs: Replace the usage of Rust native atomics
013f912eb5fa7 rust: sync: atomic: Implement Debug for Atomic<Debug>
14e9a18b07ec4 rust: sync: atomic: Make Atomic*Ops pub(crate)

My testing branch:
https://git.kernel.org/pub/scm/linux/kernel/git/da.gomez/linux.git/log/?h=20251202-0day-test-0b08fc292842-with-fixes

FWIW, this is what I've tried:

rustc --version --verbose
rustc 1.88.0 (6b00bc388 2025-06-23)
binary: rustc
commit-hash: 6b00bc3880198600130e1cf62b8f8a93494488cc
commit-date: 2025-06-23
host: x86_64-unknown-linux-gnu
release: 1.88.0
LLVM version: 20.1.5

bindgen --version --verbose
bindgen 0.72.1
Clang: Debian clang version 21.1.5 (1)

rm -rfv build_dir/
mkdir -p build_dir/
wget https://download.01.org/0day-ci/archive/20251202/202512020454.Tf36WHw5-lkp@intel.com/config -O build_dir/.config

COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-22 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=arm64 rustavailable
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-22 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=arm64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-22 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=arm64 prepare
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-22 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=arm64 -j$(nproc)

grep -i "bindgen\|rustc\|llv\|clang" build_dir/.config
CONFIG_CC_VERSION_TEXT="ClangBuiltLinux clang version 22.0.0git (https://github.com/llvm/llvm-project.git e19fa930ca838715028c00c234874d1db4f93154)"
CONFIG_CC_IS_CLANG=y
CONFIG_CLANG_VERSION=220000
CONFIG_AS_IS_LLVM=y
CONFIG_RUSTC_VERSION=108800
CONFIG_RUSTC_LLVM_VERSION=200105
CONFIG_RUSTC_HAS_COERCE_POINTEE=y
CONFIG_RUSTC_HAS_SPAN_FILE=y
CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES=y
CONFIG_RUSTC_VERSION_TEXT="rustc 1.88.0 (6b00bc388 2025-06-23)"
CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.72.1"
CONFIG_RUSTC_SUPPORTS_ARM64=y
CONFIG_CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
CONFIG_HAS_LTO_CLANG=y
# CONFIG_LTO_CLANG_THIN is not set
CONFIG_HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC=y

Build succeeds without issues (warnings, yes).