diff options
author | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-01-26 14:01:38 +0000 |
---|---|---|
committer | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-02-08 08:32:48 +0000 |
commit | ac86c042fbced7f210cb0627525832774d0a9b88 (patch) | |
tree | 7b190698ae91bedfcf42b2a00216a6b6a9d549a0 | |
parent | 606bf913f9a33a47005efcac84a430ffb7ec4778 (diff) | |
download | src-ac86c042fbced7f210cb0627525832774d0a9b88.tar.gz src-ac86c042fbced7f210cb0627525832774d0a9b88.zip |
MFC 85d8d30f9f70:
Don't allow allocating a new send tag on an INP which is being torn down.
This fixes a potential send tag leak.
Reviewed by: rrs@
Sponsored by: Mellanox Technologies // NVIDIA Networking
(cherry picked from commit 85d8d30f9f7046f5e89295352ded49135b25fbe3)
-rw-r--r-- | sys/netinet/in_pcb.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 5adac0fddddf..8232003b3808 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -3399,7 +3399,12 @@ in_pcbattach_txrtlmt(struct inpcb *inp, struct ifnet *ifp, INP_WLOCK_ASSERT(inp); - if (*st != NULL) + /* + * If there is already a send tag, or the INP is being torn + * down, allocating a new send tag is not allowed. Else send + * tags may leak. + */ + if (*st != NULL || (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) != 0) return (EINVAL); error = m_snd_tag_alloc(ifp, ¶ms, st); |