From: Kent Overstreet Date: Thu, 25 May 2023 22:10:04 +0000 (-0400) Subject: six locks: Fix an unitialized var X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c4687a4a7536c3b2139faa63e66afd1d3da5bf15;p=linux.git six locks: Fix an unitialized var In the conversion to atomic_t, six_lock_slowpath() ended up calling six_lock_wakeup() in the failure path with a state variable that was never initialized - whoops. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/six.c b/fs/bcachefs/six.c index fa508ab2108cc..9a5fcd7d35661 100644 --- a/fs/bcachefs/six.c +++ b/fs/bcachefs/six.c @@ -451,7 +451,6 @@ static int six_lock_slowpath(struct six_lock *lock, enum six_lock_type type, six_lock_should_sleep_fn should_sleep_fn, void *p, unsigned long ip) { - u32 old; int ret = 0; if (type == SIX_LOCK_write) { @@ -527,7 +526,7 @@ static int six_lock_slowpath(struct six_lock *lock, enum six_lock_type type, out: if (ret && type == SIX_LOCK_write) { six_clear_bitmask(lock, SIX_LOCK_HELD_write); - six_lock_wakeup(lock, old, SIX_LOCK_read); + six_lock_wakeup(lock, atomic_read(&lock->state), SIX_LOCK_read); } return ret;