From b58e8a129d62634e90080e6f89a0cf9d91361c0c Mon Sep 17 00:00:00 2001 From: Jamie Liu Date: Fri, 7 Jun 2024 09:27:41 -0700 Subject: [PATCH] futex: add missing locking in lockBuckets() This was incorrectly dropped in cl/491486620. PiperOrigin-RevId: 641272091 --- pkg/sentry/kernel/futex/futex.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkg/sentry/kernel/futex/futex.go b/pkg/sentry/kernel/futex/futex.go index d2b3eb8e4..c30d30172 100644 --- a/pkg/sentry/kernel/futex/futex.go +++ b/pkg/sentry/kernel/futex/futex.go @@ -453,7 +453,8 @@ func (m *Manager) lockBuckets(k1, k2 *Key) (b1, b2, lockedFirst, lockedSecond *b b1.mu.NestedLock(futexBucketLockB) return b1, b2, b2, b1 } - return b1, b2, nil, nil // +checklocksforce + b1.mu.Lock() + return b1, b2, b1, nil // +checklocksforce } // unlockBuckets unlocks two buckets. @@ -463,10 +464,7 @@ func (m *Manager) unlockBuckets(lockedFirst, lockedSecond *bucket) { if lockedSecond != nil { lockedSecond.mu.NestedUnlock(futexBucketLockB) } - if lockedFirst != nil && lockedFirst != lockedSecond { - lockedFirst.mu.Unlock() - } - return + lockedFirst.mu.Unlock() } // Wake wakes up to n waiters matching the bitmask on the given addr.