Skip to contentSkip to conversation

Patch "gfs2: Add missing rcu locking for glock lookup" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Mar 10, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

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 f38e5fb95a1f8feda88531eedc98f69b24748712 Mon 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