diff options
author | Alex Shi <alex.shi@linaro.org> | 2017-03-20 12:03:07 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2017-03-20 12:03:07 +0800 |
commit | 1c563c0006661025d7a6c9bc85fc889a4e8a1c06 (patch) | |
tree | 93d455583031d0cacebfd436d5b2118a536de5f7 /fs/gfs2/glock.c | |
parent | 71205f3b80da389c52cc2611f59e183a77c56f4f (diff) | |
parent | 28ec98bc2e4a175b60f45d505e715a33b93dd077 (diff) |
Merge tag 'v4.4.55' into linux-linaro-lsk-v4.4lsk-v4.4-17.03
This is the 4.4.55 stable release
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 32e74710b1aa..9cd8c92b953d 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -651,9 +651,11 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, 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); } |