aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2026-04-14 23:23:26 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2026-04-14 23:23:26 +0000
commit6b00c652db7f43c698e8e3a902f266025c3126ac (patch)
treeb4bffadf6cdd37d9c22be751ad67707b5dc3f3aa
parentbf41d86df0d9dc4a1342c579f4e72db3c66b3443 (diff)
inpcb: make in6_pcbdisconnect() just like in_pcbdisconnect()
Allow to be passed with already unconnected inpcb. Fixes: 4fadf2466468dd6dcb6cf9e3739ed696a18c1bb4
-rw-r--r--sys/netinet6/in6_pcb.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
index ad596cf761d2..3750c7040fbc 100644
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -531,6 +531,9 @@ in6_pcbdisconnect(struct inpcb *inp)
KASSERT(inp->inp_smr == SMR_SEQ_INVALID,
("%s: inp %p was already disconnected", __func__, inp));
+ if (inp->inp_flags & INP_UNCONNECTED)
+ return;
+
INP_HASH_WLOCK(inp->inp_pcbinfo);
in_pcbremhash(inp);
inp->inp_flags |= INP_UNCONNECTED;