]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
net: xfrm: Localize sequence counter per network namespace
authorAhmed S. Darwish <a.darwish@linutronix.de>
Tue, 16 Mar 2021 10:56:29 +0000 (11:56 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Apr 2021 06:47:16 +0000 (08:47 +0200)
commitfbc15e47cab7abb125d7a8298e03e094bc4d4240
tree9b54da5e640019912e7e9f313f4c2188ecbc78b3
parent8ac165db522d30098b79b4732c54d5776bf99f5e
net: xfrm: Localize sequence counter per network namespace

[ Upstream commit e88add19f68191448427a6e4eb059664650a837f ]

A sequence counter write section must be serialized or its internal
state can get corrupted. The "xfrm_state_hash_generation" seqcount is
global, but its write serialization lock (net->xfrm.xfrm_state_lock) is
instantiated per network namespace. The write protection is thus
insufficient.

To provide full protection, localize the sequence counter per network
namespace instead. This should be safe as both the seqcount read and
write sections access data exclusively within the network namespace. It
also lays the foundation for transforming "xfrm_state_hash_generation"
data type from seqcount_t to seqcount_LOCKNAME_t in further commits.

Fixes: b65e3d7be06f ("xfrm: state: add sequence count to detect hash resizes")
Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/net/netns/xfrm.h
net/xfrm/xfrm_state.c