From c4687a4a7536c3b2139faa63e66afd1d3da5bf15 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 25 May 2023 18:10:04 -0400 Subject: 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 --- fs/bcachefs/six.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'fs/bcachefs/six.c') diff --git a/fs/bcachefs/six.c b/fs/bcachefs/six.c index fa508ab2108c..9a5fcd7d3566 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; -- cgit v1.2.3