git: 7e995a75013c - stable/13 - sctp: cleanup of error paths
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 01 Feb 2023 22:59:08 UTC
The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=7e995a75013c11adc1208d9741fca3a09a54be43 commit 7e995a75013c11adc1208d9741fca3a09a54be43 Author: Michael Tuexen <tuexen@FreeBSD.org> AuthorDate: 2022-05-28 15:15:14 +0000 Commit: Michael Tuexen <tuexen@FreeBSD.org> CommitDate: 2023-02-01 22:58:46 +0000 sctp: cleanup of error paths (cherry picked from commit f21168e61404eacc6ad58a74ed9af92a8e5072df) --- sys/netinet/sctp_output.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 4de6fe4a8b3e..45a27e5d2e1d 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -12248,8 +12248,9 @@ sctp_copy_resume(struct uio *uio, m = m_uiotombuf(uio, M_WAITOK, max_send_len, 0, (M_PKTHDR | (user_marks_eor ? M_EOR : 0))); if (m == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - *error = ENOBUFS; + /* The only possible error is EFAULT. */ + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); + *error = EFAULT; } else { *sndout = m_length(m, NULL); *new_tail = m_last(m); @@ -12262,13 +12263,12 @@ sctp_copy_one(struct sctp_stream_queue_pending *sp, struct uio *uio, int resv_upfront) { - sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, - resv_upfront, 0); + sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, resv_upfront, 0); if (sp->data == NULL) { - SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, ENOBUFS); - return (ENOBUFS); + /* The only possible error is EFAULT. */ + SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_OUTPUT, EFAULT); + return (EFAULT); } - sp->tail_mbuf = m_last(sp->data); return (0); } @@ -12319,7 +12319,6 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sp->context = srcv->sinfo_context; sp->fsn = 0; (void)SCTP_GETTIME_TIMEVAL(&sp->ts); - sp->sid = srcv->sinfo_stream; sp->length = (uint32_t)min(uio->uio_resid, max_send_len); if ((sp->length == (uint32_t)uio->uio_resid) && @@ -12517,13 +12516,13 @@ sctp_lower_sosend(struct socket *so, error = EINVAL; goto out_unlocked; } - atomic_add_int(&inp->total_sends, 1); if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && SCTP_IS_LISTENING(inp)) { /* The listener can NOT send. */ error = EINVAL; goto out_unlocked; } + atomic_add_int(&inp->total_sends, 1); if (srcv != NULL) { sinfo_flags = srcv->sinfo_flags;