[PATCH v3 5/7] rust: sync: refcount: always inline functions using build_assert with arguments

Alexandre Courbot posted 7 patches 2 months ago
[PATCH v3 5/7] rust: sync: refcount: always inline functions using build_assert with arguments
Posted by Alexandre Courbot 2 months ago
`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>
---
 rust/kernel/sync/refcount.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/rust/kernel/sync/refcount.rs b/rust/kernel/sync/refcount.rs
index 19236a5bccde..6c7ae8b05a0b 100644
--- a/rust/kernel/sync/refcount.rs
+++ b/rust/kernel/sync/refcount.rs
@@ -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.

-- 
2.52.0
Re: [PATCH v3 5/7] rust: sync: refcount: always inline functions using build_assert with arguments
Posted by Miguel Ojeda 3 weeks, 1 day ago
On Mon, Dec 8, 2025 at 3:47 AM Alexandre Courbot <acourbot@nvidia.com> wrote:
>
> `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>

Boqun et al.: do you want to pick this one or should I take it with
your Acked-by?

Thanks!

Cheers,
Miguel
Re: [PATCH v3 5/7] rust: sync: refcount: always inline functions using build_assert with arguments
Posted by Boqun Feng 3 weeks, 1 day ago
On Thu, Jan 15, 2026 at 08:49:05AM +0100, Miguel Ojeda wrote:
> On Mon, Dec 8, 2025 at 3:47 AM Alexandre Courbot <acourbot@nvidia.com> wrote:
> >
> > `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>
> 
> Boqun et al.: do you want to pick this one or should I take it with
> your Acked-by?
> 

Acked-by: Boqun Feng <boqun.feng@gmail.com>

Going via rust-next seems more appropriate to me, thanks!

Regards,
Boqun

> Thanks!
> 
> Cheers,
> Miguel