diff options
-rw-r--r-- | kernel/futex/waitwake.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/futex/waitwake.c b/kernel/futex/waitwake.c index d52541bcc07e..bd8fef0f8d18 100644 --- a/kernel/futex/waitwake.c +++ b/kernel/futex/waitwake.c @@ -407,6 +407,12 @@ int futex_wait_multiple_setup(struct futex_vector *vs, int count, int *woken) u32 uval; /* + * Make sure to have a reference on the private_hash such that we + * don't block on rehash after changing the task state below. + */ + guard(private_hash)(); + + /* * Enqueuing multiple futexes is tricky, because we need to enqueue * each futex on the list before dealing with the next one to avoid * deadlocking on the hash bucket. But, before enqueuing, we need to |