Skip to content

Commit ee4891e

Browse files
Alexander Aringgregkh
authored andcommitted
gfs2: Wake up when sd_glock_disposal becomes zero
commit da7d554 upstream. Commit fc0e38d ("GFS2: Fix glock deallocation race") fixed a sd_glock_disposal accounting bug by adding a missing atomic_dec statement, but it failed to wake up sd_glock_wait when that decrement causes sd_glock_disposal to reach zero. As a consequence, gfs2_gl_hash_clear can now run into a 10-minute timeout instead of being woken up. Add the missing wakeup. Fixes: fc0e38d ("GFS2: Fix glock deallocation race") Cc: stable@vger.kernel.org # v2.6.39+ Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 9c3962b commit ee4891e

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

fs/gfs2/glock.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,8 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
10811081
out_free:
10821082
kfree(gl->gl_lksb.sb_lvbptr);
10831083
kmem_cache_free(cachep, gl);
1084-
atomic_dec(&sdp->sd_glock_disposal);
1084+
if (atomic_dec_and_test(&sdp->sd_glock_disposal))
1085+
wake_up(&sdp->sd_glock_wait);
10851086

10861087
out:
10871088
return ret;

0 commit comments

Comments
 (0)