git: ee9ee699d6b5 - main - sctp: remove book keeping not needed anymore
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 08 Jun 2022 21:31:39 UTC
The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=ee9ee699d6b5ee7613c6a166d2db5dbb59389cfc commit ee9ee699d6b5ee7613c6a166d2db5dbb59389cfc Author: Michael Tuexen <tuexen@FreeBSD.org> AuthorDate: 2022-06-08 21:30:52 +0000 Commit: Michael Tuexen <tuexen@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);