summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSabrina Dubroca <sd@queasysnail.net>2025-10-16 12:39:12 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-12-01 11:45:49 +0100
commit041de1f9bcf440a27db17bb8340a1f91dd9a6c5b (patch)
treed35bca36a4007903a7befadf6818f89a0c66adf3 /net
parentf74c52176857624669ce630ae61a94fb9565b03b (diff)
downloadlinux-041de1f9bcf440a27db17bb8340a1f91dd9a6c5b.tar.gz
linux-041de1f9bcf440a27db17bb8340a1f91dd9a6c5b.tar.bz2
linux-041de1f9bcf440a27db17bb8340a1f91dd9a6c5b.zip
xfrm: drop SA reference in xfrm_state_update if dir doesn't match
[ Upstream commit 8d2a2a49c30f67a480fa9ed25e08436a446f057e ] We're not updating x1, but we still need to put() it. Fixes: a4a87fa4e96c ("xfrm: Add Direction to the SA in or out") Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net')
-rw-r--r--net/xfrm/xfrm_state.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index d213ca3653a8..e4736d1ebb44 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -2191,14 +2191,18 @@ int xfrm_state_update(struct xfrm_state *x)
}
if (x1->km.state == XFRM_STATE_ACQ) {
- if (x->dir && x1->dir != x->dir)
+ if (x->dir && x1->dir != x->dir) {
+ to_put = x1;
goto out;
+ }
__xfrm_state_insert(x);
x = NULL;
} else {
- if (x1->dir != x->dir)
+ if (x1->dir != x->dir) {
+ to_put = x1;
goto out;
+ }
}
err = 0;