Re: [PATCH 3/3] rust: block: convert `block::mq` to use `Refcount`

From: Andreas Hindborg
Date: Thu Oct 10 2024 - 04:52:55 EST


"Gary Guo" <gary@xxxxxxxxxxx> writes:

> Currently there's a custom reference counting in `block::mq`, which uses
> `AtomicU64` Rust atomics, and this type doesn't exist on some 32-bit
> architectures. We cannot just change it to use 32-bit atomics, because
> doing so will make it vulnerable to refcount overflow. So switch it to
> use the kernel refcount `kernel::sync::Refcount` instead.
>
> There is an operation needed by `block::mq`, atomically decreasing
> refcount from 2 to 0, which is not available through refcount.h, so
> I exposed `Refcount::as_atomic` which allows accessing the refcount
> directly.
>
> Cc: Will Deacon <will@xxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Boqun Feng <boqun.feng@xxxxxxxxx>
> Cc: Mark Rutland <mark.rutland@xxxxxxx>
> Signed-off-by: Gary Guo <gary@xxxxxxxxxxx>


Acked-by: Andreas Hindborg <a.hindborg@xxxxxxxxxx>