diff options
author | Artem Savkov <asavkov@redhat.com> | 2017-09-27 08:25:37 -0400 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2017-09-28 03:39:05 -0400 |
commit | dd269db84908d4d3f7c0efed85bf9d8939fb0b9b (patch) | |
tree | 76b910665883a8e0be8f38b79bbcd004fd6be21b /net | |
parent | 23e9fcfef1f3d10675acce023592796851bcaf1a (diff) |
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')
-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: | |||
732 | } | 732 | } |
733 | } | 733 | } |
734 | } | 734 | } |
735 | out: | ||
736 | spin_unlock_bh(&net->xfrm.xfrm_state_lock); | ||
735 | if (cnt) { | 737 | if (cnt) { |
736 | err = 0; | 738 | err = 0; |
737 | xfrm_policy_cache_flush(); | 739 | xfrm_policy_cache_flush(); |
738 | } | 740 | } |
739 | out: | ||
740 | spin_unlock_bh(&net->xfrm.xfrm_state_lock); | ||
741 | return err; | 741 | return err; |
742 | } | 742 | } |
743 | EXPORT_SYMBOL(xfrm_state_flush); | 743 | EXPORT_SYMBOL(xfrm_state_flush); |