mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	 7129ea6e24
			
		
	
	
		7129ea6e24
		
	
	
	
	
		
			
			Starting with Rust 1.88.0 (expected 2025-06-26) [1][2], `rustc` may
introduce a new lint that catches unnecessary transmutes, e.g.:
     error: unnecessary transmute
         --> rust/uapi/uapi_generated.rs:23242:18
          |
    23242 |         unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
          |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this with: `(self._bitfield_1.get(0usize, 1u8) as u8 == 1)`
          |
          = note: `-D unnecessary-transmutes` implied by `-D warnings`
          = help: to override `-D warnings` add `#[allow(unnecessary_transmutes)]`
There are a lot of them (at least 300), but luckily they are all in
`bindgen`-generated code.
Thus clean all up by allowing it there.
Since unknown lints trigger a lint itself in older compilers, do it
conditionally so that we can keep the `unknown_lints` lint enabled.
Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
Link: https://github.com/rust-lang/rust/pull/136083 [1]
Link: https://github.com/rust-lang/rust/issues/136067 [2]
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20250502140237.1659624-4-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
		
	
			
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| 
 | |
| //! Bindings.
 | |
| //!
 | |
| //! Imports the generated bindings by `bindgen`.
 | |
| //!
 | |
| //! This crate may not be directly used. If you need a kernel C API that is
 | |
| //! not ported or wrapped in the `kernel` crate, then do so first instead of
 | |
| //! using this crate.
 | |
| 
 | |
| #![no_std]
 | |
| // See <https://github.com/rust-lang/rust-bindgen/issues/1651>.
 | |
| #![cfg_attr(test, allow(deref_nullptr))]
 | |
| #![cfg_attr(test, allow(unaligned_references))]
 | |
| #![cfg_attr(test, allow(unsafe_op_in_unsafe_fn))]
 | |
| #![allow(
 | |
|     clippy::all,
 | |
|     missing_docs,
 | |
|     non_camel_case_types,
 | |
|     non_upper_case_globals,
 | |
|     non_snake_case,
 | |
|     improper_ctypes,
 | |
|     unreachable_pub,
 | |
|     unsafe_op_in_unsafe_fn
 | |
| )]
 | |
| 
 | |
| #[allow(dead_code)]
 | |
| #[allow(clippy::undocumented_unsafe_blocks)]
 | |
| #[cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))]
 | |
| mod bindings_raw {
 | |
|     // Manual definition for blocklisted types.
 | |
|     type __kernel_size_t = usize;
 | |
|     type __kernel_ssize_t = isize;
 | |
|     type __kernel_ptrdiff_t = isize;
 | |
| 
 | |
|     // Use glob import here to expose all helpers.
 | |
|     // Symbols defined within the module will take precedence to the glob import.
 | |
|     pub use super::bindings_helper::*;
 | |
|     include!(concat!(
 | |
|         env!("OBJTREE"),
 | |
|         "/rust/bindings/bindings_generated.rs"
 | |
|     ));
 | |
| }
 | |
| 
 | |
| // When both a directly exposed symbol and a helper exists for the same function,
 | |
| // the directly exposed symbol is preferred and the helper becomes dead code, so
 | |
| // ignore the warning here.
 | |
| #[allow(dead_code)]
 | |
| mod bindings_helper {
 | |
|     // Import the generated bindings for types.
 | |
|     use super::bindings_raw::*;
 | |
|     include!(concat!(
 | |
|         env!("OBJTREE"),
 | |
|         "/rust/bindings/bindings_helpers_generated.rs"
 | |
|     ));
 | |
| }
 | |
| 
 | |
| pub use bindings_raw::*;
 |