git: f21168e61404 - main - sctp: cleanup of error paths
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 28 May 2022 15:15:44 UTC
The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=f21168e61404eacc6ad58a74ed9af92a8e5072df commit f21168e61404eacc6ad58a74ed9af92a8e5072df Author: Michael Tuexen <tuexen@FreeBSD.org> AuthorDate: 2022-05-28 15:15:14 +0000 Commit: Michael Tuexen <tuexen@FreeBSD.org> CommitDate: 2022-05-28 15:15:14 +0000 sctp: cleanup of error paths MFC after: 3 days --- 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 b54e71a0f477..b8844fdc0295 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -12250,8 +12250,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); @@ -12264,13 +12265,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); } @@ -12321,7 +12321,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) && @@ -12519,13 +12518,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;