git: fc21aafe5ff2 - main - ipsec: fix a panic with INVARIANTS
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 03 Dec 2021 23:34:19 UTC
The branch main has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=fc21aafe5ff2e02124ad004ee1c7e28b1ea5486a commit fc21aafe5ff2e02124ad004ee1c7e28b1ea5486a Author: Robert Wing <rew@FreeBSD.org> AuthorDate: 2021-12-03 23:22:23 +0000 Commit: Robert Wing <rew@FreeBSD.org> CommitDate: 2021-12-03 23:22:23 +0000 ipsec: fix a panic with INVARIANTS When adding an SPD entry that already exists, a refcount wraparound panic is encountered. This was caused from dropping a reference on the wrong security policy. Fixes: 4920e38fecc3 ("ipsec: fix race condition in key.c") Reviewed by: wma Sponsored by: Klara Inc. Differential Revision: https://reviews.freebsd.org/D33100 --- sys/netipsec/key.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c index cd2f8a4ccafa..4eb4c7c76464 100644 --- a/sys/netipsec/key.c +++ b/sys/netipsec/key.c @@ -2039,7 +2039,7 @@ key_spdadd(struct socket *so, struct mbuf *m, const struct sadb_msghdr *mhp) __func__, oldsp)); KEYDBG(KEY_DATA, kdebug_secpolicy(oldsp)); } else { - key_freesp(&newsp); + key_freesp(&oldsp); ipseclog((LOG_DEBUG, "%s: a SP entry exists already.\n", __func__)); return (key_senderror(so, m, EEXIST));