The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=f79a8585bb06a4fabe0aa2458586dc480693ea0c

commit f79a8585bb06a4fabe0aa2458586dc480693ea0c
Author:     Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2024-01-30 18:09:48 +0000
Commit:     Gleb Smirnoff <gleb...@freebsd.org>
CommitDate: 2024-01-30 18:38:33 +0000

    sockets: garbage collect SS_ISCONFIRMING
    
    Fixes:  8df32b19dee92b5eaa4b488ae78dca6accfcb38e
---
 sys/compat/linuxkpi/common/include/linux/net.h |  2 +-
 sys/kern/uipc_debug.c                          |  4 ----
 sys/kern/uipc_socket.c                         | 15 ++++-----------
 sys/kern/uipc_syscalls.c                       |  2 +-
 sys/netgraph/ng_ksocket.c                      |  3 +--
 sys/netinet/sctp_pcb.c                         |  1 -
 sys/netinet/sctputil.c                         |  1 -
 sys/rpc/clnt_vc.c                              |  2 +-
 sys/sys/socketvar.h                            |  2 +-
 9 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/net.h 
b/sys/compat/linuxkpi/common/include/linux/net.h
index dc0b46df9c99..a5172f3f31eb 100644
--- a/sys/compat/linuxkpi/common/include/linux/net.h
+++ b/sys/compat/linuxkpi/common/include/linux/net.h
@@ -56,7 +56,7 @@ sock_getname(struct socket *so, struct sockaddr *sa, int 
*sockaddr_len,
         * length.  Such notion doesn't even exist in Linux KPI.
         */
        if (peer) {
-               if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0)
+               if ((so->so_state & SS_ISCONNECTED) == 0)
                        return (-ENOTCONN);
 
                error = so->so_proto->pr_peeraddr(so, sa);
diff --git a/sys/kern/uipc_debug.c b/sys/kern/uipc_debug.c
index 1e699a10223e..83cb7f6dc00a 100644
--- a/sys/kern/uipc_debug.c
+++ b/sys/kern/uipc_debug.c
@@ -176,10 +176,6 @@ db_print_sostate(short so_state)
                db_printf("%sSS_ASYNC", comma ? ", " : "");
                comma = 1;
        }
-       if (so_state & SS_ISCONFIRMING) {
-               db_printf("%sSS_ISCONFIRMING", comma ? ", " : "");
-               comma = 1;
-       }
 }
 
 static void
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 65230e39e4ae..5e5e7d2cd058 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -792,7 +792,7 @@ solisten_clone(struct socket *head)
        return (so);
 }
 
-/* Connstatus may be 0, or SS_ISCONFIRMING, or SS_ISCONNECTED. */
+/* Connstatus may be 0 or SS_ISCONNECTED. */
 struct socket *
 sonewconn(struct socket *head, int connstatus)
 {
@@ -1516,8 +1516,7 @@ sosend_dgram(struct socket *so, struct sockaddr *addr, 
struct uio *uio,
                 */
                if ((so->so_proto->pr_flags & PR_CONNREQUIRED) &&
                    (so->so_proto->pr_flags & PR_IMPLOPCL) == 0) {
-                       if ((so->so_state & SS_ISCONFIRMING) == 0 &&
-                           !(resid == 0 && clen != 0)) {
+                       if (!(resid == 0 && clen != 0)) {
                                SOCKBUF_UNLOCK(&so->so_snd);
                                error = ENOTCONN;
                                goto out;
@@ -1725,8 +1724,7 @@ restart:
                         */
                        if ((so->so_proto->pr_flags & PR_CONNREQUIRED) &&
                            (so->so_proto->pr_flags & PR_IMPLOPCL) == 0) {
-                               if ((so->so_state & SS_ISCONFIRMING) == 0 &&
-                                   !(resid == 0 && clen != 0)) {
+                               if (!(resid == 0 && clen != 0)) {
                                        SOCKBUF_UNLOCK(&so->so_snd);
                                        error = ENOTCONN;
                                        goto release;
@@ -2068,11 +2066,6 @@ soreceive_generic(struct socket *so, struct sockaddr 
**psa, struct uio *uio,
                return (soreceive_rcvoob(so, uio, flags));
        if (mp != NULL)
                *mp = NULL;
-       if ((pr->pr_flags & PR_WANTRCVD) && (so->so_state & SS_ISCONFIRMING)
-           && uio->uio_resid) {
-               VNET_SO_ASSERT(so);
-               pr->pr_rcvd(so, 0);
-       }
 
        error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags));
        if (error)
@@ -3862,7 +3855,7 @@ soisconnected(struct socket *so)
        bool last __diagused;
 
        SOCK_LOCK(so);
-       so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING|SS_ISCONFIRMING);
+       so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING);
        so->so_state |= SS_ISCONNECTED;
 
        if (so->so_qstate == SQ_INCOMP) {
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 366698054bce..dce0ab9b53d4 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -1412,7 +1412,7 @@ kern_getpeername(struct thread *td, int fd, struct 
sockaddr *sa)
        if (error != 0)
                return (error);
        so = fp->f_data;
-       if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0) {
+       if ((so->so_state & SS_ISCONNECTED) == 0) {
                error = ENOTCONN;
                goto done;
        }
diff --git a/sys/netgraph/ng_ksocket.c b/sys/netgraph/ng_ksocket.c
index 98eb19ab485b..388fe9557db3 100644
--- a/sys/netgraph/ng_ksocket.c
+++ b/sys/netgraph/ng_ksocket.c
@@ -782,8 +782,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
 
                        /* Get function */
                        if (msg->header.cmd == NGM_KSOCKET_GETPEERNAME) {
-                               if ((so->so_state
-                                   & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0)
+                               if ((so->so_state & SS_ISCONNECTED) == 0)
                                        ERROUT(ENOTCONN);
                                func = sopeeraddr;
                        } else
diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
index a1742b2fffca..1509ac13901e 100644
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -4851,7 +4851,6 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb 
*stcb, int from_inpcbfre
                                SOCKBUF_LOCK(&so->so_rcv);
                                so->so_state &= ~(SS_ISCONNECTING |
                                    SS_ISDISCONNECTING |
-                                   SS_ISCONFIRMING |
                                    SS_ISCONNECTED);
                                so->so_state |= SS_ISDISCONNECTED;
                                socantrcvmore_locked(so);
diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c
index 19180b3cf725..b23efd9c8968 100644
--- a/sys/netinet/sctputil.c
+++ b/sys/netinet/sctputil.c
@@ -5654,7 +5654,6 @@ restart_nosblocks:
                                }
                                so->so_state &= ~(SS_ISCONNECTING |
                                    SS_ISDISCONNECTING |
-                                   SS_ISCONFIRMING |
                                    SS_ISCONNECTED);
                                if (error == 0) {
                                        if ((inp->sctp_flags & 
SCTP_PCB_FLAGS_WAS_CONNECTED) == 0) {
diff --git a/sys/rpc/clnt_vc.c b/sys/rpc/clnt_vc.c
index 69635413637b..8b69117ba2ac 100644
--- a/sys/rpc/clnt_vc.c
+++ b/sys/rpc/clnt_vc.c
@@ -153,7 +153,7 @@ clnt_vc_create(
        ct->ct_upcallrefs = 0;
        ct->ct_rcvstate = RPCRCVSTATE_NORMAL;
 
-       if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0) {
+       if ((so->so_state & SS_ISCONNECTED) == 0) {
                error = soconnect(so, raddr, curthread);
                SOCK_LOCK(so);
                interrupted = 0;
diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h
index 5d651b36b1e7..030087cbc17c 100644
--- a/sys/sys/socketvar.h
+++ b/sys/sys/socketvar.h
@@ -211,7 +211,7 @@ struct socket {
 #define        SS_ISDISCONNECTING      0x0008  /* in process of disconnecting 
*/
 #define        SS_NBIO                 0x0100  /* non-blocking ops */
 #define        SS_ASYNC                0x0200  /* async i/o notify */
-#define        SS_ISCONFIRMING         0x0400  /* deciding to accept 
connection req */
+/* was SS_ISCONFIRMING         0x0400  */
 #define        SS_ISDISCONNECTED       0x2000  /* socket disconnected from 
peer */
 
 #ifdef _KERNEL

Reply via email to