diff options
author | Richard Scheffenegger <rscheff@FreeBSD.org> | 2021-05-21 22:08:56 +0000 |
---|---|---|
committer | Richard Scheffenegger <rscheff@FreeBSD.org> | 2021-06-09 10:51:36 +0000 |
commit | 0230e6cf56eb6be41b075537a4752b898d27cc1d (patch) | |
tree | 82d7c8326126281e3c5e0198887bd1b662e92ccc /sys/netinet | |
parent | 55cc0a478506ee1c2db7b2f9aadb9855e5490af3 (diff) | |
download | src-0230e6cf56eb6be41b075537a4752b898d27cc1d.tar.gz src-0230e6cf56eb6be41b075537a4752b898d27cc1d.zip |
rack: honor prior socket buffer lock when doing the upcall
While partially reverting D24237 with D29690, due to introducing some
unintended effects for in-kernel TCP consumers, the preexisting lock
on the socket send buffer was not considered properly.
Found by: markj
MFC after: 2 weeks
Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D30390
(cherry picked from commit 39756885633fd9d9649b4cb0f0abf594bfeb8dbb)
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/tcp_stacks/rack.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 9203eb8e252d..bd17749bbd0e 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -10643,7 +10643,7 @@ rack_fastack(struct mbuf *m, struct tcphdr *th, struct socket *so, rack_adjust_sendmap(rack, &so->so_snd, tp->snd_una); /* Wake up the socket if we have room to write more */ rack_log_wakeup(tp,rack, &so->so_snd, acked, 2); - sowwakeup(so); + sowwakeup_locked(so); m_freem(mfree); tp->t_rxtshift = 0; RACK_TCPT_RANGESET(tp->t_rxtcur, RACK_REXMTVAL(tp), @@ -13172,7 +13172,7 @@ rack_do_compressed_ack_processing(struct tcpcb *tp, struct socket *so, struct mb rack_adjust_sendmap(rack, &so->so_snd, tp->snd_una); /* Wake up the socket if we have room to write more */ rack_log_wakeup(tp,rack, &so->so_snd, acked, 2); - sowwakeup(so); + sowwakeup_locked(so); m_freem(mfree); } /* update progress */ |