Re: [PATCH 1/2] rust: sync: require `Send` and `Sync` for `Backend::State`

From: Alice Ryhl
Date: Tue Sep 03 2024 - 07:31:48 EST


On Tue, Sep 3, 2024 at 11:58 AM Benno Lossin <benno.lossin@xxxxxxxxx> wrote:
>
> On 03.09.24 11:30, Alice Ryhl wrote:
> > On Tue, Sep 3, 2024 at 11:17 AM Benno Lossin <benno.lossin@xxxxxxxxx> wrote:
> >>
> >> `Lock<T, B>` implements `Send` and `Sync` when `T` is `Send` or `Sync`
> >> respectively. Since this does not depend on `B`, creating a `Lock` that
> >> is `Send` and `Sync`, but with a `!Sync` or `!Send` state is possible.
> >> This is a soundness issue, thus add the bounds to the respective impls.
> >>
> >> Signed-off-by: Benno Lossin <benno.lossin@xxxxxxxxx>
> >
> > Currently, B::State is set directly to `bindings::spinlock_t` or
> > `bindings::mutex` and these types are pretty unlikely to be Send/Sync
> > on all kernel configurations. If you're going to make this change, you
> > will need to change these types.
>
> Oh yeah you are correct. I did try to compile it, but maybe I missed
> some config options, since it didn't complain?

My guess is that it only happens with lockdep enabled.

Alice