From owner-svn-src-head@freebsd.org Tue Feb 25 19:26:42 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AE13E23CE09; Tue, 25 Feb 2020 19:26:42 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48RppB2CPDz3JbN; Tue, 25 Feb 2020 19:26:42 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C09351B779; Tue, 25 Feb 2020 19:26:41 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 01PJQfl7002207; Tue, 25 Feb 2020 19:26:41 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 01PJQeko002202; Tue, 25 Feb 2020 19:26:40 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <202002251926.01PJQeko002202@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Tue, 25 Feb 2020 19:26:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r358319 - in head/sys: kern sys X-SVN-Group: head X-SVN-Commit-Author: glebius X-SVN-Commit-Paths: in head/sys: kern sys X-SVN-Commit-Revision: 358319 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Feb 2020 19:26:42 -0000 Author: glebius Date: Tue Feb 25 19:26:40 2020 New Revision: 358319 URL: https://svnweb.freebsd.org/changeset/base/358319 Log: Make ktls_frame() never fail. Caller must supply correct mbufs. This makes sendfile code a bit simplier. Modified: head/sys/kern/kern_sendfile.c head/sys/kern/uipc_ktls.c head/sys/kern/uipc_socket.c head/sys/sys/ktls.h Modified: head/sys/kern/kern_sendfile.c ============================================================================== --- head/sys/kern/kern_sendfile.c Tue Feb 25 19:12:40 2020 (r358318) +++ head/sys/kern/kern_sendfile.c Tue Feb 25 19:26:40 2020 (r358319) @@ -1046,12 +1046,8 @@ prepend_header: CURVNET_SET(so->so_vnet); #ifdef KERN_TLS - if (tls != NULL) { - error = ktls_frame(m, tls, &tls_enq_cnt, - TLS_RLTYPE_APP); - if (error != 0) - goto done; - } + if (tls != NULL) + ktls_frame(m, tls, &tls_enq_cnt, TLS_RLTYPE_APP); #endif if (nios == 0) { /* Modified: head/sys/kern/uipc_ktls.c ============================================================================== --- head/sys/kern/uipc_ktls.c Tue Feb 25 19:12:40 2020 (r358318) +++ head/sys/kern/uipc_ktls.c Tue Feb 25 19:26:40 2020 (r358319) @@ -1231,7 +1231,7 @@ ktls_seq(struct sockbuf *sb, struct mbuf *m) * encryption. The returned value should be passed to ktls_enqueue * when scheduling encryption of this chain of mbufs. */ -int +void ktls_frame(struct mbuf *top, struct ktls_session *tls, int *enq_cnt, uint8_t record_type) { @@ -1250,10 +1250,8 @@ ktls_frame(struct mbuf *top, struct ktls_session *tls, * records whose payload does not exceed the maximum * frame length. */ - if (m->m_len > maxlen || m->m_len == 0) - return (EINVAL); - tls_len = m->m_len; - + KASSERT(m->m_len <= maxlen && m->m_len > 0, + ("ktls_frame: m %p len %d\n", m, m->m_len)); /* * TLS frames require unmapped mbufs to store session * info. @@ -1261,6 +1259,7 @@ ktls_frame(struct mbuf *top, struct ktls_session *tls, KASSERT((m->m_flags & M_NOMAP) != 0, ("ktls_frame: mapped mbuf %p (top = %p)\n", m, top)); + tls_len = m->m_len; pgs = m->m_ext.ext_pgs; /* Save a reference to the session. */ @@ -1346,7 +1345,6 @@ ktls_frame(struct mbuf *top, struct ktls_session *tls, *enq_cnt += pgs->npgs; } } - return (0); } void Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Tue Feb 25 19:12:40 2020 (r358318) +++ head/sys/kern/uipc_socket.c Tue Feb 25 19:26:40 2020 (r358319) @@ -1591,12 +1591,8 @@ restart: M_NOMAP | ((flags & MSG_EOR) ? M_EOR : 0)); if (top != NULL) { - error = ktls_frame(top, tls, + ktls_frame(top, tls, &tls_enq_cnt, tls_rtype); - if (error) { - m_freem(top); - goto release; - } } tls_rtype = TLS_RLTYPE_APP; } else Modified: head/sys/sys/ktls.h ============================================================================== --- head/sys/sys/ktls.h Tue Feb 25 19:12:40 2020 (r358318) +++ head/sys/sys/ktls.h Tue Feb 25 19:26:40 2020 (r358319) @@ -177,7 +177,7 @@ int ktls_crypto_backend_register(struct ktls_crypto_ba int ktls_crypto_backend_deregister(struct ktls_crypto_backend *be); int ktls_enable_tx(struct socket *so, struct tls_enable *en); void ktls_destroy(struct ktls_session *tls); -int ktls_frame(struct mbuf *m, struct ktls_session *tls, int *enqueue_cnt, +void ktls_frame(struct mbuf *m, struct ktls_session *tls, int *enqueue_cnt, uint8_t record_type); void ktls_seq(struct sockbuf *sb, struct mbuf *m); void ktls_enqueue(struct mbuf *m, struct socket *so, int page_count);