Patch "gfs2: Add missing rcu locking for glock lookup" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
gfs2: Add missing rcu locking for glock lookup
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
gfs2-add-missing-rcu-locking-for-glock-lookup.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
f38e5fb95a1f8feda88531eedc98f69b24748712Mon Sep 17 00:00:00 2001
From: Andrew Price <[email protected]>
Date: Wed, 22 Feb 2017 12:05:03 -0500
Subject: gfs2: Add missing rcu locking for glock lookup
From: Andrew Price <[email protected]>
commit f38e5fb95a1f8feda88531eedc98f69b24748712 upstream.
We must hold the rcu read lock across looking up glocks and trying to bump their refcount to prevent the glocks from being freed in between.
--- fs/gfs2/glock.c | 5 +++++ 1 file changed, 5 insertions(+)
fs/gfs2/glock.c +5 -0
@@ -651,9 +651,11 @@ int gfs2_glock_get(struct gfs2_sbd *sdp,struct kmem_cache *cachep;int ret, tries =0 ; +rcu_read_lock (); gl =rhashtable_lookup_fast (&gl_hash_table, &name, ht_parms);if (gl && !lockref_get_not_dead (&gl->gl_lockref)) gl =NULL ; +rcu_read_unlock (); *glp = gl;if (gl)
@@ -721,15 +723,18 @@ again:if (ret == -EEXIST ) { ret =0 ; +rcu_read_lock (); tmp =rhashtable_lookup_fast (&gl_hash_table, &name, ht_parms);if (tmp ==NULL || !lockref_get_not_dead (&tmp->gl_lockref)) {if (++tries <100 ) { +rcu_read_unlock ();cond_resched (); goto again; } tmp =NULL ; ret = -ENOMEM ; } +rcu_read_unlock (); }else {WARN_ON_ONCE (ret); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/gfs2-add-missing-rcu-locking-for-glock-lookup.patch