From nobody Wed Feb 1 22:57:04 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P6ck86qsTz3cGV0; Wed, 1 Feb 2023 22:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P6ck86KPrz3D6R; Wed, 1 Feb 2023 22:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675292224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=67LTPNSksvocktcOYDlFJyYvJXoLi5UswFzRLjR3QP8=; b=Bgz/5p7dEtSnnzKzjs/fzCERDBQ7WomDRYaESDB4wobBt5isT8dV/Mfd0TJO3ySHnQWWhF QgP6R+2e3g+Br0fFNEQnuDQctCEyhFO15mgYWJVkmXiPDJgthCt48UkYrTj9V0i+NZI+WI pwZGlWV13PGH5T9DZHt/qQk+91v1+PheG6UiK3CfOg8lnap2QNhG73M5VIH37CcsrM/swn Zk9m/opj7Cmu4nmD6f4iRzH2nZKHeEcP/u+wjb5OMYgabdQrTzHrMxA2oblDmCsOnRO3Vv RubZSmkZNNSPDp4tW039qdsTCMaojHihPG0Q9kcBcwCaOtg3rC9hsjXJ9CIr3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675292224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=67LTPNSksvocktcOYDlFJyYvJXoLi5UswFzRLjR3QP8=; b=c7aRn82306hIs4rzNvncHj81RzaG7oTwolE2JEZNpTqYI2Aww9nms3BjjWx0p333pOIZm/ 1lLZafaHEmVXNs15098zKF65iA9kyJOPO9pP1JkMPtaxK4xjfHevxviBxlPOSQpdTEoqgs z45kCq7v9wfgvZMgk8z4QccnA81442ky/2xB2UtleWG1VoAPTAnPz2+PMfOkShEC9iBIPo Kez3cZYJUfLdA0BnYQlETMhJIWel0Xi1Jnz/UJ341yZB1sWN1dTVOFfNlrZcpsLzXM/IS/ PdNo7JRksRukd5evq9OVW0TgqLPdjyVWP5UGndRHuxpl8wAHLddoytj53ZpxpQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675292224; a=rsa-sha256; cv=none; b=cySuXjECGJnjDXHNrgpOnrBCmXx4J0x1+F0Pr++Cw1/nSYmrh0fGmrjCHMN14uSNBwglBd /HUgKGRCNSuLeSZfAc01F6afg3XwPdu+mJrC59knqtRdZj1QbMMYaQvypEp+1FNxMUOC+m y9oAODl1Y7uqCxZvO6+fRx9lPAxl9P468nbQc4d43L5SLmgHRd1duLTHPTXCueRgqthePz pohfKofIrVpEeMYB8KMMbjobljC1q9ELBWr4yQFrivZ5AJcMysnJzd2nGl5pODeqaj9cj6 81jeep7eShHIq8ogeD/p3OCWQYKAZ+NHDa1JPb1k8UTjkB0c6YOrodAZc+1OSA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P6ck85NnCzWgj; Wed, 1 Feb 2023 22:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 311Mv4ee017477; Wed, 1 Feb 2023 22:57:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 311Mv4ig017476; Wed, 1 Feb 2023 22:57:04 GMT (envelope-from git) Date: Wed, 1 Feb 2023 22:57:04 GMT Message-Id: <202302012257.311Mv4ig017476@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: a1742f61f4b7 - stable/13 - sctp: use sb_avail() when accessing sb_acc for reading List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a1742f61f4b79c84eb36ab12d83e577f714551d8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=a1742f61f4b79c84eb36ab12d83e577f714551d8 commit a1742f61f4b79c84eb36ab12d83e577f714551d8 Author: Michael Tuexen AuthorDate: 2022-05-14 10:38:43 +0000 Commit: Michael Tuexen CommitDate: 2023-02-01 22:56:33 +0000 sctp: use sb_avail() when accessing sb_acc for reading This is a cleanup to simplify a patch for PR 260116. PR: 260116 (cherry picked from commit edc5b6ea881d7e196fee8df7ebcd372f8f5b4469) --- sys/netinet/sctp_indata.c | 2 +- sys/netinet/sctp_os_bsd.h | 2 ++ sys/netinet/sctp_output.c | 2 +- sys/netinet/sctp_pcb.c | 2 +- sys/netinet/sctp_usrreq.c | 7 +++---- sys/netinet/sctputil.c | 30 +++++++++++++++--------------- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c index 9cbbf69d2421..d3c969bb47b1 100644 --- a/sys/netinet/sctp_indata.c +++ b/sys/netinet/sctp_indata.c @@ -1942,7 +1942,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * When we have NO room in the rwnd we check to make sure * the reader is doing its job... */ - if (stcb->sctp_socket->so_rcv.sb_cc) { + if (SCTP_SBAVAIL(&stcb->sctp_socket->so_rcv) > 0) { /* some to read, wake-up */ sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); } diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h index faca8a3b6276..8240fca64c48 100644 --- a/sys/netinet/sctp_os_bsd.h +++ b/sys/netinet/sctp_os_bsd.h @@ -381,6 +381,8 @@ typedef struct callout sctp_os_timer_t; #define SCTP_SORESERVE(so, send, recv) soreserve(so, send, recv) /* wakeup a socket */ #define SCTP_SOWAKEUP(so) wakeup(&(so)->so_timeo) +/* number of bytes ready to read */ +#define SCTP_SBAVAIL(sb) sbavail(sb) /* clear the socket buffer state */ #define SCTP_SB_CLEAR(sb) \ (sb).sb_cc = 0; \ diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 306755d659eb..f35bb0bbafc3 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -11517,7 +11517,7 @@ jump_out: drp->current_onq = htonl(asoc->size_on_reasm_queue + asoc->size_on_all_streams + asoc->my_rwnd_control_len + - stcb->sctp_socket->so_rcv.sb_cc); + SCTP_SBAVAIL(&stcb->sctp_socket->so_rcv)); } else { /*- * If my rwnd is 0, possibly from mbuf depletion as well as diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c index be41276351fe..60aa6f175366 100644 --- a/sys/netinet/sctp_pcb.c +++ b/sys/netinet/sctp_pcb.c @@ -3409,7 +3409,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) if ((stcb->asoc.size_on_reasm_queue > 0) || (stcb->asoc.control_pdapi) || (stcb->asoc.size_on_all_streams > 0) || - (so && (so->so_rcv.sb_cc > 0))) { + ((so != NULL) && (SCTP_SBAVAIL(&so->so_rcv) > 0))) { /* Left with Data unread */ struct mbuf *op_err; diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index b6eae2b061d6..78ece9dd4641 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -543,7 +543,7 @@ sctp_close(struct socket *so) if ((inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) == 0) { inp->sctp_flags |= SCTP_PCB_FLAGS_SOCKET_GONE | SCTP_PCB_FLAGS_CLOSE_IP; if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 13); #endif @@ -705,9 +705,8 @@ sctp_disconnect(struct socket *so) return (0); } NET_EPOCH_ENTER(et); - if (((so->so_options & SO_LINGER) && - (so->so_linger == 0)) || - (so->so_rcv.sb_cc > 0)) { + if (((so->so_options & SO_LINGER) && (so->so_linger == 0)) || + (SCTP_SBAVAIL(&so->so_rcv) > 0)) { if (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) { /* Left with Data unread */ struct mbuf *op_err; diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 23631e5a20d5..7746740ea6c1 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -76,7 +76,7 @@ sctp_sblog(struct sockbuf *sb, struct sctp_tcb *stcb, int from, int incr) struct sctp_cwnd_log sctp_clog; sctp_clog.x.sb.stcb = stcb; - sctp_clog.x.sb.so_sbcc = sb->sb_cc; + sctp_clog.x.sb.so_sbcc = SCTP_SBAVAIL(sb); if (stcb) sctp_clog.x.sb.stcb_sbcc = stcb->asoc.sb_cc; else @@ -5565,11 +5565,11 @@ sctp_sorecvmsg(struct socket *so, in_eeor_mode = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) { sctp_misc_ints(SCTP_SORECV_ENTER, - rwnd_req, in_eeor_mode, so->so_rcv.sb_cc, (uint32_t)uio->uio_resid); + rwnd_req, in_eeor_mode, SCTP_SBAVAIL(&so->so_rcv), (uint32_t)uio->uio_resid); } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_RECV_RWND_LOGGING_ENABLE) { sctp_misc_ints(SCTP_SORECV_ENTERPL, - rwnd_req, block_allowed, so->so_rcv.sb_cc, (uint32_t)uio->uio_resid); + rwnd_req, block_allowed, SCTP_SBAVAIL(&so->so_rcv), (uint32_t)uio->uio_resid); } error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(in_flags)); @@ -5588,21 +5588,21 @@ restart_nosblocks: (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE)) { goto out; } - if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && (so->so_rcv.sb_cc == 0)) { + if ((so->so_rcv.sb_state & SBS_CANTRCVMORE) && SCTP_SBAVAIL(&so->so_rcv) == 0) { if (so->so_error) { error = so->so_error; if ((in_flags & MSG_PEEK) == 0) so->so_error = 0; goto out; } else { - if (so->so_rcv.sb_cc == 0) { + if (SCTP_SBAVAIL(&so->so_rcv) == 0) { /* indicate EOF */ error = 0; goto out; } } } - if (so->so_rcv.sb_cc <= held_length) { + if (SCTP_SBAVAIL(&so->so_rcv) <= held_length) { if (so->so_error) { error = so->so_error; if ((in_flags & MSG_PEEK) == 0) { @@ -5610,7 +5610,7 @@ restart_nosblocks: } goto out; } - if ((so->so_rcv.sb_cc == 0) && + if ((SCTP_SBAVAIL(&so->so_rcv) == 0) && ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL))) { if ((inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED) == 0) { @@ -5670,7 +5670,7 @@ restart_nosblocks: SCTP_INP_READ_LOCK(inp); } control = TAILQ_FIRST(&inp->read_queue); - if ((control == NULL) && (so->so_rcv.sb_cc != 0)) { + if ((control == NULL) && (SCTP_SBAVAIL(&so->so_rcv) > 0)) { #ifdef INVARIANTS panic("Huh, its non zero and nothing on control?"); #endif @@ -5805,8 +5805,8 @@ restart_nosblocks: * fragment interleave is NOT on. So stuff the sb_cc * into the our held count, and its time to sleep again. */ - held_length = so->so_rcv.sb_cc; - control->held_length = so->so_rcv.sb_cc; + held_length = SCTP_SBAVAIL(&so->so_rcv); + control->held_length = SCTP_SBAVAIL(&so->so_rcv); goto restart; } /* Clear the held length since there is something to read */ @@ -6255,7 +6255,7 @@ wait_some_more: (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE))) { goto release; } - if (so->so_rcv.sb_cc <= control->held_length) { + if (SCTP_SBAVAIL(&so->so_rcv) <= control->held_length) { error = sbwait(&so->so_rcv); if (error) { goto release; @@ -6282,8 +6282,8 @@ wait_some_more: } goto done_with_control; } - if (so->so_rcv.sb_cc > held_length) { - control->held_length = so->so_rcv.sb_cc; + if (SCTP_SBAVAIL(&so->so_rcv) > held_length) { + control->held_length = SCTP_SBAVAIL(&so->so_rcv); held_length = 0; } goto wait_some_more; @@ -6432,13 +6432,13 @@ out: freed_so_far, (uint32_t)((uio) ? (slen - uio->uio_resid) : slen), stcb->asoc.my_rwnd, - so->so_rcv.sb_cc); + SCTP_SBAVAIL(&so->so_rcv)); } else { sctp_misc_ints(SCTP_SORECV_DONE, freed_so_far, (uint32_t)((uio) ? (slen - uio->uio_resid) : slen), 0, - so->so_rcv.sb_cc); + SCTP_SBAVAIL(&so->so_rcv)); } } stage_left: