From 927c5cea3f67b47cda445901fde585f1bd7fbdb7 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Thu, 24 Jun 2004 02:57:12 +0000 Subject: Protect so_oobmark with with SOCKBUF_LOCK(&so->so_rcv), and broaden locking in tcp_input() for TCP packets with urgent data pointers to hold the socket buffer lock across testing and updating oobmark from just protecting sb_state. Update socket locking annotations --- sys/netinet/tcp_input.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sys/netinet/tcp_input.c') diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index cab335470748..ef1d02cd3a72 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -2295,13 +2295,12 @@ step6: */ if (SEQ_GT(th->th_seq+th->th_urp, tp->rcv_up)) { tp->rcv_up = th->th_seq + th->th_urp; + SOCKBUF_LOCK(&so->so_rcv); so->so_oobmark = so->so_rcv.sb_cc + (tp->rcv_up - tp->rcv_nxt) - 1; - if (so->so_oobmark == 0) { - SOCKBUF_LOCK(&so->so_rcv); + if (so->so_oobmark == 0) so->so_rcv.sb_state |= SBS_RCVATMARK; - SOCKBUF_UNLOCK(&so->so_rcv); - } + SOCKBUF_UNLOCK(&so->so_rcv); sohasoutofband(so); tp->t_oobflags &= ~(TCPOOB_HAVEDATA | TCPOOB_HADDATA); } -- cgit v1.2.3