Greg Kroah-Hartman
e92d336eaf
Merge 6.19-rc5 into char-misc-next
...
We need the char/misc fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2026-01-12 08:51:13 +01:00
Linus Torvalds
0fa27899e0
Merge tag 'driver-core-6.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
...
Pull driver core fixes from Danilo Krummrich:
- Fix swapped example values for the `family` and `machine` attributes
in the sysfs SoC bus ABI documentation
- Fix Rust build and intra-doc issues when optional subsystems
(CONFIG_PCI, CONFIG_AUXILIARY_BUS, CONFIG_PRINTK) are disabled
- Fix typos and incorrect safety comments in Rust PCI, DMA, and
device ID documentation
* tag 'driver-core-6.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core:
rust: device: Remove explicit import of CStrExt
rust: pci: fix typos in Bar struct's comments
rust: device: fix broken intra-doc links
rust: dma: fix broken intra-doc links
rust: driver: fix broken intra-doc links to example driver types
rust: device_id: replace incorrect word in safety documentation
rust: dma: remove incorrect safety documentation
docs: ABI: sysfs-devices-soc: Fix swapped sample values
2026-01-10 15:04:04 -10:00
Alice Ryhl
ccf9e07011
rust: sync: Inline various lock related methods
...
While debugging a different issue [1], the following relocation was
noticed in the rust_binder.ko file:
R_AARCH64_CALL26 _RNvXNtNtNtCsdfZWD8DztAw_6kernel4sync4lock8spinlockNtB2_15SpinLockBackendNtB4_7Backend6unlock
This relocation (and a similar one for lock) occurred many times
throughout the module. That is not really useful because all this
function does is call spin_unlock(), so what we actually want here is
that a call to spin_unlock() dirctly is generated in favor of this
wrapper method.
Thus, mark these methods inline.
[boqun: Reword the commit message a bit]
Link: https://lore.kernel.org/p/20251111-binder-fix-list-remove-v1-0-8ed14a0da63d@google.com
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251218-inline-lock-unlock-v2-1-fbadac8bd61b@google.com
2026-01-10 10:53:46 +08:00
Alice Ryhl
abf2111d8d
rust: helpers: Move #define __rust_helper out of atomic.c
...
In order to support inline helpers [1], we need to have __rust_helper
defined for all helper files. Current we are lucky that atomic.c is the
first file in helpers.c, but this is fragile. Thus, move it to
helpers.c.
[boqun: Reword the commit message and apply file hash changes]
Link: https://lore.kernel.org/r/20260105-define-rust-helper-v2-0-51da5f454a67@google.com [1]
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260107-move-rust_helper-define-v1-1-4109d58ef275@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
5628f0510a
rust: wait: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-25-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
75b6034780
rust: time: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-22-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
5f1193d55a
rust: task: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-21-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
d4ad4de929
rust: sync: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-20-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
9ba1aaf25a
rust: refcount: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-17-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
5e03edaed3
rust: rcu: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Joel Fernandes (NVIDIA) <joel@joelfernandes.org >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-16-51da5f454a67@google.com
2026-01-09 19:01:42 +08:00
Alice Ryhl
a87e6fe873
rust: processor: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-13-51da5f454a67@google.com
2026-01-09 19:01:41 +08:00
Alice Ryhl
9f658bd537
rust: cpu: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-6-51da5f454a67@google.com
2026-01-09 19:01:41 +08:00
Alice Ryhl
1c7a6f48f7
rust: completion: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-5-51da5f454a67@google.com
2026-01-09 19:01:41 +08:00
Alice Ryhl
71a4d13fa1
rust: blk: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-2-51da5f454a67@google.com
2026-01-09 19:01:41 +08:00
Alice Ryhl
aa574e0f21
rust: barrier: Add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-1-51da5f454a67@google.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
323e4bfcbe
rust: list: Switch to kernel::sync atomic primitives
...
Convert uses of `AtomicBool` to `Atomic<bool>`.
Note that the compare_exchange migration simplifies to
`try_cmpxchg()`, since `try_cmpxchg()` provides relaxed ordering on
failure, making the explicit failure ordering unnecessary.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251230093718.1852322-3-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
4bac28727a
rust: sync: atomic: Add atomic bool tests
...
Add tests for Atomic<bool> operations.
Atomic<bool> does not fit into the existing u8/16/32/64 tests so
introduce a dedicated test for it.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260101034922.2020334-3-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
06bd0e52bf
rust: sync: atomic: Add atomic bool support via i8 representation
...
Add `bool` support, `Atomic<bool>` by using `i8` as its underlying
representation.
Rust specifies that `bool` has size 1 and alignment 1 [1], so it
matches `i8` on layout; keep `static_assert!()` checks to enforce this
assumption at build time.
[boqun: Remove the unnecessary impl AtomicImpl for bool]
Link: https://doc.rust-lang.org/reference/types/boolean.html [1]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20260101034922.2020334-2-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
584f286f82
rust: sync: atomic: Add i8/i16 xchg and cmpxchg support
...
Add atomic xchg and cmpxchg operation support for i8 and i16 types
with tests.
Note that since the current implementation of
Atomic::<{i8,i16}>::{load,store}() is READ_ONCE()/WRITE_ONCE()-based.
The atomicity between load/store and xchg/cmpxchg is only guaranteed if
the architecture has native RmW support, hence i8/i16 is currently
AtomicImpl only when CONFIG_ARCH_SUPPORTS_ATOMIC_RWM=y.
[boqun: Make i8/i16 AtomicImpl only when
CONFIG_ARCH_SUPPORTS_ATOMIC_RWM=y]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251228120546.1602275-4-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
7b001c97d9
rust: sync: atomic: Add store_release/load_acquire tests
...
Add minimum store_release/load_acquire tests.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251211113826.1299077-5-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
b33796d554
rust: sync: atomic: Add i8/i16 load and store support
...
Add atomic operation support for i8 and i16 types using volatile
read/write and smp_load_acquire/smp_store_release helpers.
[boqun: Adjust [1] to avoid introduction of
impl_atomic_only_load_and_store_ops!() in the middle]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com >
Link: https://lore.kernel.org/all/20251228120546.1602275-1-fujita.tomonori@gmail.com/ [1]
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251211113826.1299077-4-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
2bb8c41e61
rust: sync: atomic: Prepare AtomicOps macros for i8/i16 support
...
Rework the internal AtomicOps macro plumbing to generate per-type
implementations from a mapping list.
Capture the trait definition once and reuse it for both declaration
and per-type impl expansion to reduce duplication and keep future
extensions simple.
This is a preparatory refactor for enabling i8/i16 atomics cleanly.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251228120546.1602275-2-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
8de731a6c7
rust: helpers: Add i8/i16 atomic try_cmpxchg_relaxed helpers
...
Add i8/i16 atomic try_cmpxchg_relaxed helpers that call
try_cmpxchg_relaxed() macro implementing atomic try_cmpxchg_relaxed
using architecture-specific instructions.
[boqun: Use try_cmpxchg_relaxed() instead of raw_try_cmpxchg_relaxed()]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251227115951.1424458-5-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
b5992f07a9
rust: helpers: Add i8/i16 atomic try_cmpxchg_release helpers
...
Add i8/i16 atomic try_cmpxchg_release helpers that call
try_cmpxchg_release() macro implementing atomic try_cmpxchg_release
using architecture-specific instructions.
[boqun: Use try_cmpxchg_release() instead of raw_try_cmpxchg_release()]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251227115951.1424458-4-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
fed6aaa392
rust: helpers: Add i8/i16 atomic try_cmpxchg_acquire helpers
...
Add i8/i16 atomic try_cmpxchg_acquire helpers that call
try_cmpxchg_acquire() macro implementing atomic try_cmpxchg_acquire
using architecture-specific instructions.
[boqun: Use try_cmpxchg_acquire() instead of raw_try_cmpxchg_acquire()]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251227115951.1424458-3-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
164e4b5600
rust: helpers: Add i8/i16 atomic try_cmpxchg helpers
...
Add i8/i16 atomic try_cmpxchg helpers that call try_cmpxchg() macro
implementing atomic try_cmpxchg using architecture-specific
instructions.
[boqun: Add comments explaining CONFIG_ARCH_SUPPORTS_ATOMIC_RMW and use
try_cmpxchg() instead of raw_try_cmpxchg()]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251227115951.1424458-2-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
910cbddc41
rust: helpers: Add i8/i16 atomic xchg_relaxed helpers
...
Add i8/i16 atomic xchg_relaxed helpers that call xchg_relaxed() macro
implementing atomic xchg_relaxed using architecture-specific
instructions.
[boqun: Use xchg_relaxed() instead of raw_xchg_relaxed()]
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251223062140.938325-5-fujita.tomonori@gmail.com
2026-01-09 19:01:41 +08:00
FUJITA Tomonori
1bfca1e7e8
rust: helpers: Add i8/i16 atomic xchg_release helpers
...
Add i8/i16 atomic xchg_release helpers that call xchg_release() macro
implementing atomic xchg_release using architecture-specific
instructions.
[boqun: Use xchg_release() instead of raw_xchg_release()]
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251223062140.938325-4-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
FUJITA Tomonori
ab717dd98b
rust: helpers: Add i8/i16 atomic xchg_acquire helpers
...
Add i8/i16 atomic xchg_acquire helpers that call xchg_acquire() macro
implementing atomic xchg_acquire using architecture-specific
instructions.
[boqun: Use xchg_acquire() instead of raw_xchg_acquire()]
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251223062140.938325-3-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
FUJITA Tomonori
5dbc0a6924
rust: helpers: Add i8/i16 atomic xchg helpers
...
Add i8/i16 atomic xchg helpers that call xchg() macro implementing
atomic xchg using architecture-specific instructions.
[boqun: Use xchg() instead of raw_xchg()]
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251223062140.938325-2-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
FUJITA Tomonori
300e53b3d3
rust: helpers: Add i8/i16 relaxed atomic helpers
...
Add READ_ONCE/WRITE_ONCE based helpers for i8 and i16 types to support
relaxed atomic operations in Rust.
While relaxed operations could be implemented purely in Rust using
read_volatile() and write_volatile(), using C's READ_ONCE() and
WRITE_ONCE() macros ensures complete consistency with the kernel
memory model.
These helpers expose different symbol names than their C counterparts
so they are split into atomic_ext.c instead of atomic.c. The symbol
names; the names make the interface Rust/C clear, consistent with
i32/i64.
[boqun: Rename the functions from {load,store} to {read,set} to avoid
future adjustment]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251211113826.1299077-3-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
FUJITA Tomonori
2cc3d5d6ad
rust: helpers: Add i8/i16 atomic_read_acquire/atomic_set_release helpers
...
Add helper functions to expose smp_load_acquire() and
smp_store_release() for i8 and i16 types.
The smp_load_acquire() and smp_store_release() macros require type
information (sizeof) to generate appropriate architecture-specific
memory ordering instructions. Therefore, separate helper functions are
needed for each type size.
These helpers expose different symbol names than their C counterparts
so they are split into atomic_ext.c instead of atomic.c. The symbol
names; atomic_[i8|i16]_read_acquire and atomic_[i8|i16]_set_release
makes the interface Rust/C clear, consistent with i32/i64.
These helpers will be used by the upcoming Atomic<i8> and Atomic<i16>
implementation to provide proper Acquire/Release semantics across all
architectures.
[boqun: Rename the functions from {load,store} to {read,set} to avoid
future adjustment]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251211113826.1299077-2-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
Alice Ryhl
09248ed8cd
rust: sync: Implement Unpin for ARef
...
The default implementation of Unpin for ARef<T> is conditional on T
being Unpin due to its PhantomData<T> field. However, this is overly
strict as pointers to T are legal to move even if T itself cannot move.
Since commit 66f1ea83d9 ("rust: lock: Add a Pin<&mut T> accessor")
this causes build failures when combined with a Mutex that contains an
field ARef<T>, because almost any type that ARef is used with is !Unpin.
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com >
Reviewed-by: Benno Lossin <lossin@kernel.org >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251218-unpin-for-aref-v2-1-30d77129cbc6@google.com
2026-01-09 19:01:40 +08:00
FUJITA Tomonori
8a581130b1
rust: sync: set_once: Implement Send and Sync
...
Implement Send and Sync for SetOnce<T> to allow it to be used across
thread boundaries.
Send: SetOnce<T> can be transferred across threads when T: Send, as
the contained value is also transferred and will be dropped on the
destination thread.
Sync: SetOnce<T> can be shared across threads when T: Sync, as
as_ref() provides shared references &T and atomic operations ensure
proper synchronization. Since the inner T may be dropped on any
thread, we also require T: Send.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20251216000901.221375-1-fujita.tomonori@gmail.com
2026-01-09 19:01:40 +08:00
Alice Ryhl
106ab474e5
rust: sync: Clean up LockClassKey and its docs
...
Several aspects of the code and documentation for this type is
incomplete. Also several things are hidden from the docs. Thus, clean it
up and make it easier to read the rendered html docs.
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Benno Lossin <lossin@kernel.org >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20250811-lock-class-key-cleanup-v3-2-b12967ee1ca2@google.com
2026-01-09 19:01:40 +08:00
Alice Ryhl
86f4a271dc
rust: sync: Refactor static_lock_class!() macro
...
By introducing a new_static() constructor, the macro does not need to go
through MaybeUninit::uninit().assume_init(), which is a pattern that is
best avoided when possible.
The safety comment not only requires that the value is leaked, but also
that it is stored in the right portion of memory. This is so that the
lockdep static_obj() check will succeed when using this constructor. One
could argue that lockdep detects this scenario, so that safety
requirement isn't needed. However, it simplifies matters to require that
static_obj() will succeed and it's not a burdensome requirement on the
caller.
Suggested-by: Benno Lossin <lossin@kernel.org >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Reviewed-by: Benno Lossin <lossin@kernel.org >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Boqun Feng <boqun.feng@gmail.com >
Link: https://patch.msgid.link/20250811-lock-class-key-cleanup-v3-1-b12967ee1ca2@google.com
2026-01-09 19:01:40 +08:00
Danilo Krummrich
d88f27d7f4
rust: faux: use "kernel vertical" style for imports
...
Convert all imports to use "kernel vertical" style.
With this, subsequent patches neither introduce unrelated changes nor
leave an inconsistent import pattern.
While at it, drop unnecessary imports covered by prelude::*.
Link: https://docs.kernel.org/rust/coding-guidelines.html#imports
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://patch.msgid.link/20260105142123.95030-5-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-07 19:56:00 +01:00
Danilo Krummrich
52563c665b
rust: driver-core: use "kernel vertical" style for imports
...
Convert all imports to use "kernel vertical" style.
With this, subsequent patches neither introduce unrelated changes nor
leave an inconsistent import pattern.
While at it, drop unnecessary imports covered by prelude::*.
Link: https://docs.kernel.org/rust/coding-guidelines.html#imports
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://patch.msgid.link/20260105142123.95030-3-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-07 19:55:49 +01:00
Danilo Krummrich
da74aee2ad
rust: platform: use "kernel vertical" style for imports
...
Convert all imports to use "kernel vertical" style.
With this, subsequent patches neither introduce unrelated changes nor
leave an inconsistent import pattern.
While at it, drop unnecessary imports covered by prelude::*.
Link: https://docs.kernel.org/rust/coding-guidelines.html#imports
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://patch.msgid.link/20260105142123.95030-2-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-07 19:55:49 +01:00
Danilo Krummrich
6506b44e88
rust: auxiliary: use "kernel vertical" style for imports
...
Convert all imports to use "kernel vertical" style.
With this, subsequent patches neither introduce unrelated changes nor
leave an inconsistent import pattern.
While at it, drop unnecessary imports covered by prelude::*.
Link: https://docs.kernel.org/rust/coding-guidelines.html#imports
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://patch.msgid.link/20260105142123.95030-1-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-07 19:55:49 +01:00
Danilo Krummrich
13f2bd893a
rust: usb: use "kernel vertical" style for imports
...
Convert all imports to use "kernel vertical" style.
With this, subsequent patches neither introduce unrelated changes nor
leave an inconsistent import pattern.
While at it, drop unnecessary imports covered by prelude::*.
Link: https://docs.kernel.org/rust/coding-guidelines.html#imports
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Link: https://patch.msgid.link/20260105142123.95030-4-dakr@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2026-01-07 16:12:48 +01:00
Alice Ryhl
d0f6fc3f7a
rust: usb: add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Link: https://patch.msgid.link/20260105-define-rust-helper-v2-24-51da5f454a67@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2026-01-07 16:12:15 +01:00
Alice Ryhl
2d38a4e3e2
rust: security: add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Paul Moore <paul@paul-moore.com >
2026-01-06 20:30:09 -05:00
Alice Ryhl
517fd96cba
rust: cred: add __rust_helper to helpers
...
This is needed to inline these helpers into Rust code.
Reviewed-by: Boqun Feng <boqun.feng@gmail.com >
Reviewed-by: Gary Guo <gary@garyguo.net >
Signed-off-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Paul Moore <paul@paul-moore.com >
2026-01-06 20:30:09 -05:00
Ewan Chorynski
4348796233
rust: drm: Improve safety comment when using Pin::into_inner_unchecked
...
The safety requirements for `Pin::into_inner_unchecked` state that the
returned pointer must be treated as pinned until it is dropped. Such a
guarantee is provided by the `ARef` type. This patch improves the safety
comment to better reflect this.
Signed-off-by: Ewan Chorynski <ewan.chorynski@ik.me >
Link: https://patch.msgid.link/20251228-drm-gem-safety-comment-v2-1-99bb861c3371@ik.me
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-06 23:30:28 +01:00
Marko Turk
31bc0aade4
rust: io: remove square brackets from pci::Bar reference
...
Remove square brackets since this section is not a part of doc-comment
so the reference will not be converted to a link in the generated docs.
Suggested-by: Danilo Krummrich <dakr@kernel.org >
Signed-off-by: Marko Turk <mt@markoturk.info >
Link: https://patch.msgid.link/20260105213726.73000-1-mt@markoturk.info
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-06 21:44:58 +01:00
FUJITA Tomonori
8510ef5e3c
rust: device: Remove explicit import of CStrExt
...
Remove the explicit import of CStrExt. When CONFIG_PRINTK is disabled
this import causes a build error:
error: unused import: `crate::str::CStrExt`
--> rust/kernel/device.rs:17:5
|
17 | use crate::str::CStrExt as _;
| ^^^^^^^^^^^^^^^^^^^
|
= note: `-D unused-imports` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(unused_imports)]`
error: aborting due to 1 previous error
CStrExt is covered by prelude::* so the explicit import is redundant.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com >
Fixes: 3b83f5d5e7 ("rust: replace `CStr` with `core::ffi::CStr`")
Link: https://patch.msgid.link/20260106000320.2593800-1-fujita.tomonori@gmail.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-06 21:18:31 +01:00
Hsiu Che Yu
3a1ec424dd
rust: num: bounded: mark __new as unsafe
...
The `Bounded::__new()` constructor relies on the caller to ensure the
value can be represented within N bits. Failing to uphold this
requirement breaks the type invariant. Mark it as unsafe and document
this requirement in a Safety section to make the contract explicit.
Update all call sites to use unsafe blocks and change their comments
from `INVARIANT:` to `SAFETY:`, as they are now justifying unsafe
operations rather than establishing type invariants.
Fixes: 01e345e82e ("rust: num: add Bounded integer wrapping type")
Link: https://lore.kernel.org/all/aS1qC_ol2XEpZ44b@google.com/
Reported-by: Miguel Ojeda <ojeda@kernel.org >
Closes: https://github.com/Rust-for-Linux/linux/issues/1211
Signed-off-by: Hsiu Che Yu <yu.whisper.personal@gmail.com >
Acked-by: Alexandre Courbot <acourbot@nvidia.com >
Link: https://patch.msgid.link/20251204033849.23480-1-yu.whisper.personal@gmail.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org >
2026-01-06 21:01:47 +01:00
Marko Turk
9f92d7d1cb
rust: pci: fix typos in Bar struct's comments
...
Fix a typo in the doc-comment of the Bar structure: 'inststance ->
instance'.
Add also 'is' to the comment inside Bar's `new()` function (suggested
by Dirk):
// `pdev` is valid by the invariants of `Device`.
Fixes: bf9651f84b ("rust: pci: implement I/O mappable `pci::Bar`")
Suggested-by: Dirk Behme <dirk.behme@de.bosch.com >
Signed-off-by: Marko Turk <mt@markoturk.info >
Reviewed-by: Dirk Behme <dirk.behme@de.bosch.com >
Link: https://patch.msgid.link/20260105213726.73000-2-mt@markoturk.info
Signed-off-by: Danilo Krummrich <dakr@kernel.org >
2026-01-06 20:58:43 +01:00
Siddhesh Poyarekar
609db7e73b
rust: kbuild: Add -fdiagnostics-show-context to bindgen_skip_c_flags
...
This got added with:
7454048db2 ("kbuild: Enable GCC diagnostic context for value-tracking warnings")
but clang does not have this option, so avoid passing it to bindgen.
[ Details about what the option does are in the commit above. Nathan
also expands on this:
Right, this does look correct, as this option is specific to GCC
for the purpose of exposing more information from GCC internals to
the user for understanding diagnostics better.
I checked that in Compiler Explorer GCC 15.2 doesn't have it, but GCC
trunk indeed has. - Miguel ]
Fixes: 7454048db2 ("kbuild: Enable GCC diagnostic context for value-tracking warnings")
Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org >
Link: https://patch.msgid.link/20251217224050.1186896-1-siddhesh@gotplt.org
[ Removed Cc: stable. Added title prefix. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org >
2026-01-06 20:51:21 +01:00