]> git.baikalelectronics.ru Git - kernel.git/commit
xfrm: policy: increment xfrm_hash_generation on hash rebuild
authorFlorian Westphal <fw@strlen.de>
Fri, 4 Jan 2019 13:17:01 +0000 (14:17 +0100)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 9 Jan 2019 12:58:23 +0000 (13:58 +0100)
commit489b35c950d3625dfddb6d3858ab9711a6e10324
tree5495f12516af3b388932004c7ee9dd1eaa179e44
parentf0abe33632f4195d0e0bd605200cfefa1cbe2c66
xfrm: policy: increment xfrm_hash_generation on hash rebuild

Hash rebuild will re-set all the inexact entries, then re-insert them.
Lookups that can occur in parallel will therefore not find any policies.

This was safe when lookups were still guarded by rwlock.
After rcu-ification, lookups check the hash_generation seqcount to detect
when a hash resize takes place.  Hash rebuild missed the needed increment.

Hash resizes and hash rebuilds cannot occur in parallel (both acquire
hash_resize_mutex), so just increment xfrm_hash_generation, like resize.

Fixes: e1f78ee71b853f ("xfrm: policy: make xfrm_policy_lookup_bytype lockless")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_policy.c