diff options
author | Artem Savkov <asavkov@redhat.com> | 2017-09-27 14:25:37 +0200 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2017-09-28 09:39:05 +0200 |
commit | dd269db84908d4d3f7c0efed85bf9d8939fb0b9b (patch) | |
tree | 76b910665883a8e0be8f38b79bbcd004fd6be21b /net/xfrm/xfrm_state.c | |
parent | 23e9fcfef1f3d10675acce023592796851bcaf1a (diff) | |
download | linux-stable-dd269db84908d4d3f7c0efed85bf9d8939fb0b9b.tar.gz linux-stable-dd269db84908d4d3f7c0efed85bf9d8939fb0b9b.tar.bz2 linux-stable-dd269db84908d4d3f7c0efed85bf9d8939fb0b9b.zip |
xfrm: don't call xfrm_policy_cache_flush under xfrm_state_lock
I might be wrong but it doesn't look like xfrm_state_lock is required
for xfrm_policy_cache_flush and calling it under this lock triggers both
"sleeping function called from invalid context" and "possible circular
locking dependency detected" warnings on flush.
Fixes: ec30d78c14a8 xfrm: add xdst pcpu cache
Signed-off-by: Artem Savkov <asavkov@redhat.com>
Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/xfrm/xfrm_state.c')
-rw-r--r-- | net/xfrm/xfrm_state.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 0dab1cd79ce4..12213477cd3a 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -732,12 +732,12 @@ restart: } } } +out: + spin_unlock_bh(&net->xfrm.xfrm_state_lock); if (cnt) { err = 0; xfrm_policy_cache_flush(); } -out: - spin_unlock_bh(&net->xfrm.xfrm_state_lock); return err; } EXPORT_SYMBOL(xfrm_state_flush); |