On Tue, Jul 11, 2023 at 06:47:03PM -0600, Jens Axboe wrote: > Since we now provide a way to pass in a wake handler and data, ensure we > use __futex_queue() to avoid having futex_queue() overwrite our wait > data. > diff --git a/kernel/futex/waitwake.c b/kernel/futex/waitwake.c > index 3471af87cb7d..dfd02ca5ecfa 100644 > --- a/kernel/futex/waitwake.c > +++ b/kernel/futex/waitwake.c > @@ -446,7 +446,8 @@ static int futex_wait_multiple_setup(struct futex_vector *vs, int count, int *wo > * next futex. Queue each futex at this moment so hb can > * be unlocked. > */ > - futex_queue(q, hb); > + __futex_queue(q, hb); > + spin_unlock(&hb->lock); > continue; > } I'm not following; I even applied all your patches up to this point, but futex_queue() still reads: static inline void futex_queue(struct futex_q *q, struct futex_hash_bucket *hb) __releases(&hb->lock) { __futex_queue(q, hb); spin_unlock(&hb->lock); } How would it be different and overwrite anything ?!?