The branch main has been updated by tuexen:

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

commit ee9ee699d6b5ee7613c6a166d2db5dbb59389cfc
Author:     Michael Tuexen <tue...@freebsd.org>
AuthorDate: 2022-06-08 21:30:52 +0000
Commit:     Michael Tuexen <tue...@freebsd.org>
CommitDate: 2022-06-08 21:30:52 +0000

    sctp: remove book keeping not needed anymore
    
    MFC after:      3 days
---
 sys/netinet/sctp_output.c | 38 ++------------------------------------
 1 file changed, 2 insertions(+), 36 deletions(-)

diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c
index 0a3827899888..629fd65d1aa6 100644
--- a/sys/netinet/sctp_output.c
+++ b/sys/netinet/sctp_output.c
@@ -12442,7 +12442,6 @@ sctp_lower_sosend(struct socket *so,
        bool free_cnt_applied = false;
        bool some_on_control;
        bool got_all_of_the_send = false;
-       bool hold_tcblock = false;
        bool non_blocking = false;
 
        error = 0;
@@ -12557,7 +12556,6 @@ sctp_lower_sosend(struct socket *so,
                stcb = LIST_FIRST(&inp->sctp_asoc_list);
                if (stcb != NULL) {
                        SCTP_TCB_LOCK(stcb);
-                       hold_tcblock = true;
                }
                SCTP_INP_RUNLOCK(inp);
        } else if (sinfo_assoc_id > SCTP_ALL_ASSOC) {
@@ -12565,7 +12563,6 @@ sctp_lower_sosend(struct socket *so,
                SCTP_INP_RUNLOCK(inp);
                if (stcb != NULL) {
                        SCTP_TCB_LOCK_ASSERT(stcb);
-                       hold_tcblock = true;
                }
        } else if (addr != NULL) {
                /*-
@@ -12582,7 +12579,6 @@ sctp_lower_sosend(struct socket *so,
                        SCTP_INP_WUNLOCK(inp);
                } else {
                        SCTP_TCB_LOCK_ASSERT(stcb);
-                       hold_tcblock = true;
                }
        } else {
                SCTP_INP_RUNLOCK(inp);
@@ -12591,11 +12587,9 @@ sctp_lower_sosend(struct socket *so,
 #ifdef INVARIANTS
        if (stcb != NULL) {
                SCTP_TCB_LOCK_ASSERT(stcb);
-               KASSERT(hold_tcblock, ("tcb lock hold, hold_tcblock is false"));
-       } else {
-               KASSERT(!hold_tcblock, ("hold_tcblock is true, but stcb is 
NULL"));
        }
 #endif
+
        if ((stcb == NULL) && (addr != NULL)) {
                /* Possible implicit send? */
                SCTP_ASOC_CREATE_LOCK(inp);
@@ -12626,7 +12620,6 @@ sctp_lower_sosend(struct socket *so,
                        SCTP_INP_WUNLOCK(inp);
                } else {
                        SCTP_TCB_LOCK_ASSERT(stcb);
-                       hold_tcblock = true;
                        SCTP_ASOC_CREATE_UNLOCK(inp);
                        create_lock_applied = false;
                }
@@ -12669,7 +12662,6 @@ sctp_lower_sosend(struct socket *so,
                                goto out_unlocked;
                        }
                        SCTP_TCB_LOCK_ASSERT(stcb);
-                       hold_tcblock = true;
                        SCTP_ASOC_CREATE_UNLOCK(inp);
                        create_lock_applied = false;
                        /*
@@ -12683,7 +12675,6 @@ sctp_lower_sosend(struct socket *so,
                                if (sctp_process_cmsgs_for_init(stcb, control, 
&error)) {
                                        sctp_free_assoc(inp, stcb, 
SCTP_NORMAL_PROC,
                                            SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_6);
-                                       hold_tcblock = false;
                                        stcb = NULL;
                                        KASSERT(error != 0,
                                            ("error is 0 although 
sctp_process_cmsgs_for_init() indicated an error"));
@@ -12703,7 +12694,6 @@ sctp_lower_sosend(struct socket *so,
 
        KASSERT(!create_lock_applied, ("create_lock_applied is true"));
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
 
        asoc = &stcb->asoc;
@@ -12807,7 +12797,6 @@ sctp_lower_sosend(struct socket *so,
        local_soresv = sndlen;
 
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -12863,10 +12852,8 @@ sctp_lower_sosend(struct socket *so,
                SCTP_BUF_LEN(mm) = (int)(tot_out + sizeof(struct 
sctp_paramhdr));
                if (top == NULL) {
                        SCTP_TCB_UNLOCK(stcb);
-                       hold_tcblock = false;
                        error = uiomove((caddr_t)ph, (int)tot_out, uio);
                        SCTP_TCB_LOCK(stcb);
-                       hold_tcblock = true;
                        if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) ||
                            (asoc->state & SCTP_STATE_WAS_ABORTED)) {
                                sctp_m_freem(mm);
@@ -12915,7 +12902,6 @@ sctp_lower_sosend(struct socket *so,
        }
 
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -12974,7 +12960,6 @@ sctp_lower_sosend(struct socket *so,
                        be.error = 0;
                        stcb->block_entry = &be;
                        SCTP_TCB_UNLOCK(stcb);
-                       hold_tcblock = false;
                        error = sbwait(so, SO_SND);
                        if (error == 0) {
                                if (so->so_error != 0) {
@@ -12986,7 +12971,6 @@ sctp_lower_sosend(struct socket *so,
                        }
                        SOCKBUF_UNLOCK(&so->so_snd);
                        SCTP_TCB_LOCK(stcb);
-                       hold_tcblock = true;
                        stcb->block_entry = NULL;
                        if (error != 0) {
                                goto out_unlocked;
@@ -13021,7 +13005,6 @@ sctp_lower_sosend(struct socket *so,
 
 skip_preblock:
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13056,10 +13039,8 @@ skip_preblock:
                if (strm->last_msg_incomplete == 0) {
        do_a_copy_in:
                        SCTP_TCB_UNLOCK(stcb);
-                       hold_tcblock = false;
                        sp = sctp_copy_it_in(stcb, asoc, sndrcvninfo, uio, net, 
max_len, user_marks_eor, &error);
                        SCTP_TCB_LOCK(stcb);
-                       hold_tcblock = true;
                        if ((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) ||
                            (asoc->state & SCTP_STATE_WAS_ABORTED)) {
                                if (asoc->state & SCTP_STATE_WAS_ABORTED) {
@@ -13144,7 +13125,6 @@ skip_preblock:
                }
 
                KASSERT(stcb != NULL, ("stcb is NULL"));
-               KASSERT(hold_tcblock, ("hold_tcblock is false"));
                SCTP_TCB_LOCK_ASSERT(stcb);
                KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
                    ("Association about to be freed"));
@@ -13165,12 +13145,10 @@ skip_preblock:
                            ((max_len > 0) && (SCTP_SB_LIMIT_SND(so) < 
SCTP_BASE_SYSCTL(sctp_add_more_threshold))) ||
                            (uio->uio_resid <= max_len)) {
                                SCTP_TCB_UNLOCK(stcb);
-                               hold_tcblock = false;
                                sndout = 0;
                                new_tail = NULL;
                                mm = sctp_copy_resume(uio, (int)max_len, 
user_marks_eor, &error, &sndout, &new_tail);
                                SCTP_TCB_LOCK(stcb);
-                               hold_tcblock = true;
                                if ((asoc->state & 
SCTP_STATE_ABOUT_TO_BE_FREED) ||
                                    (asoc->state & SCTP_STATE_WAS_ABORTED)) {
                                        /*
@@ -13226,7 +13204,6 @@ skip_preblock:
                        }
 
                        KASSERT(stcb != NULL, ("stcb is NULL"));
-                       KASSERT(hold_tcblock, ("hold_tcblock is false"));
                        SCTP_TCB_LOCK_ASSERT(stcb);
                        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 
0,
                            ("Association about to be freed"));
@@ -13356,7 +13333,6 @@ skip_preblock:
                                be.error = 0;
                                stcb->block_entry = &be;
                                SCTP_TCB_UNLOCK(stcb);
-                               hold_tcblock = false;
                                error = sbwait(so, SO_SND);
                                if (error == 0) {
                                        if (so->so_error != 0)
@@ -13367,7 +13343,6 @@ skip_preblock:
                                }
                                SOCKBUF_UNLOCK(&so->so_snd);
                                SCTP_TCB_LOCK(stcb);
-                               hold_tcblock = true;
                                stcb->block_entry = NULL;
                                if ((asoc->state & 
SCTP_STATE_ABOUT_TO_BE_FREED) ||
                                    (asoc->state & SCTP_STATE_WAS_ABORTED)) {
@@ -13399,7 +13374,6 @@ skip_preblock:
                }
 
                KASSERT(stcb != NULL, ("stcb is NULL"));
-               KASSERT(hold_tcblock, ("hold_tcblock is false"));
                SCTP_TCB_LOCK_ASSERT(stcb);
                KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
                    ("Association about to be freed"));
@@ -13442,7 +13416,6 @@ skip_preblock:
 
 dataless_eof:
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13519,7 +13492,6 @@ dataless_eof:
                                        
sctp_abort_an_association(stcb->sctp_ep, stcb,
                                            op_err, false, SCTP_SO_LOCKED);
                                        NET_EPOCH_EXIT(et);
-                                       hold_tcblock = false;
                                        stcb = NULL;
                                        error = ECONNABORTED;
                                        goto out;
@@ -13533,7 +13505,6 @@ dataless_eof:
 
 skip_out_eof:
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13555,7 +13526,6 @@ skip_out_eof:
        }
 
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13605,7 +13575,6 @@ skip_out_eof:
        }
 
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13636,7 +13605,6 @@ skip_out_eof:
            asoc->total_output_queue_size, error);
 
        KASSERT(stcb != NULL, ("stcb is NULL"));
-       KASSERT(hold_tcblock, ("hold_tcblock is false"));
        SCTP_TCB_LOCK_ASSERT(stcb);
        KASSERT((asoc->state & SCTP_STATE_ABOUT_TO_BE_FREED) == 0,
            ("Association about to be freed"));
@@ -13652,12 +13620,10 @@ out_unlocked:
                if (local_soresv) {
                        atomic_subtract_int(&asoc->sb_send_resv, (int)sndlen);
                }
-               if (hold_tcblock) {
-                       SCTP_TCB_UNLOCK(stcb);
-               }
                if (free_cnt_applied) {
                        atomic_subtract_int(&asoc->refcnt, 1);
                }
+               SCTP_TCB_UNLOCK(stcb);
        }
        if (top != NULL) {
                sctp_m_freem(top);

Reply via email to