aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorRichard Scheffenegger <rscheff@FreeBSD.org>2021-05-21 22:08:56 +0000
committerRichard Scheffenegger <rscheff@FreeBSD.org>2021-06-09 10:51:36 +0000
commit0230e6cf56eb6be41b075537a4752b898d27cc1d (patch)
tree82d7c8326126281e3c5e0198887bd1b662e92ccc /sys/netinet
parent55cc0a478506ee1c2db7b2f9aadb9855e5490af3 (diff)
downloadsrc-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.c4
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 */