]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rust: sync: refcount: always inline functions using build_assert with arguments
authorAlexandre Courbot <acourbot@nvidia.com>
Mon, 8 Dec 2025 02:47:03 +0000 (11:47 +0900)
committerMiguel Ojeda <ojeda@kernel.org>
Sun, 18 Jan 2026 19:40:12 +0000 (20:40 +0100)
`build_assert` relies on the compiler to optimize out its error path.
Functions using it with its arguments must thus always be inlined,
otherwise the error path of `build_assert` might not be optimized out,
triggering a build error.

Cc: stable@vger.kernel.org
Fixes: bb38f35b35f9 ("rust: implement `kernel::sync::Refcount`")
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Acked-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://patch.msgid.link/20251208-io-build-assert-v3-5-98aded02c1ea@nvidia.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/sync/refcount.rs

index 19236a5bccdeb010b65f71d6141db38467006e56..6c7ae8b05a0b8537cc0fa8aea3fec1b512ac0a24 100644 (file)
@@ -23,7 +23,8 @@ impl Refcount {
     /// Construct a new [`Refcount`] from an initial value.
     ///
     /// The initial value should be non-saturated.
-    #[inline]
+    // Always inline to optimize out error path of `build_assert`.
+    #[inline(always)]
     pub fn new(value: i32) -> Self {
         build_assert!(value >= 0, "initial value saturated");
         // SAFETY: There are no safety requirements for this FFI call.