From nobody Tue Jun 23 15:51:55 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gl8hD2C2pz6hdNF for ; Tue, 23 Jun 2026 15:51:56 +0000 (UTC) (envelope-from git@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gl8hC674rz3Dwt for ; Tue, 23 Jun 2026 15:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782229915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utBifaii6jd3BtIkHSr65LBxTVjARZN2tHAtboxoF5g=; b=hE5/ZjueoRXWsY1k5mwPy/b2o9VkEvXQ/VRv+s98X875zDT1NjWU3h7rUTNj8P2iDOYvxS KFuN8OwGXal+M767MlisHUEj5B89rrNvyU0LZv3gDfr0/vvQw+nu64Bpug0HnbcXy3NU4J 0RNrpfE1tvm+oT6IJpYKZmVm1Lh0Ea5vhTq3UF87cg+NUhJ0Pkb4O1ixjL6DjWgqZxxHXu bUoabvT5udli6ooj7NN/QtSKl7AKFOkcWaNlcNkJof34zJ0spnf+07KhF/mszTg4PnJZQD 9UJ4R+v2u9IKn8laPvy0DY4yXFAmbTs8c8I1MZ45n4TLG92E1clsA5ybblLpTQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782229915; a=rsa-sha256; cv=none; b=Iixj64wKRtIAVPnGEzDWM573k3a1/oaMHFq/t0gxj3ubmhM4fl0qALjepThKbtMFHyiD7X IPipAJyGLqw+XPw7OrGffIpgf98RVPgVGKqWcbAJX+bHpQ48D1Xok53+dF9CGCwl1TTzox rUtp/fPD0jpRzie+LIHMkipDIAPLdL+/f5ARPIZB450bnDhS+aN8MUG0zljasE81qhV49x fSdNzqW3hMRntCUsG4Qraj07tLr3WNhhZBg6izv0qHZA8Akl8dinlSIFV8LtdYVhj+POM3 s31P94UnXU+VPOxBSMbGVTV6gJYMPsssoUoIqTYuufbviBXNe2dnp+EaGsFidg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782229915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=utBifaii6jd3BtIkHSr65LBxTVjARZN2tHAtboxoF5g=; b=Lqv6RTmjYE7VGU64B+tBmA2QlL3SAWFz9gO/tEN903ASXkYjVD6rkxdvNSr9xaztpTZwXj rQ/UT3JRE6BO9ECmi4c3pkivaVsrg/Of/VQL2izXc85iNJUo5tNEEg2oie7ddg0p5d6mC1 ckUcSJcv+4iMUa1uGBHaItWUiv4DxhtiiThwyXX4gG/HgpzPPrHeIeTkc/au7VjkG2BpEB Le2kE/fBoedxw8oQnJG6lmtwR3FoP73Oq45vHhyetFag2M1jkdiQymC8CrX/FM9X+sBTLm rcLsleLanhMxzK8586yCsRPANU24cN2Kb91amBjQMpmx27VwgDv0SVjDA+LA1g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gl8hC5CYmzgxN for ; Tue, 23 Jun 2026 15:51:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 238a5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 23 Jun 2026 15:51:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 1a03b40a1343 - main - ktls: Make ktls_mbuf_crypto_state private and simplify List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a03b40a134318f26c93d85087de6a588b65f217 Auto-Submitted: auto-generated Date: Tue, 23 Jun 2026 15:51:55 +0000 Message-Id: <6a3aab9b.238a5.5f8838ad@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=1a03b40a134318f26c93d85087de6a588b65f217 commit 1a03b40a134318f26c93d85087de6a588b65f217 Author: John Baldwin AuthorDate: 2026-06-23 15:51:43 +0000 Commit: John Baldwin CommitDate: 2026-06-23 15:51:43 +0000 ktls: Make ktls_mbuf_crypto_state private and simplify Sponsored by: Chelsio Communications --- sys/kern/uipc_ktls.c | 49 ++++++++++++++++++++++++------------------------- sys/sys/ktls.h | 8 -------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index 155c2e6e54f7..17189514c2cb 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -77,6 +77,13 @@ #include #include +typedef enum { + KTLS_MBUF_CRYPTO_ST_MIXED = 0, + KTLS_MBUF_CRYPTO_ST_ENCRYPTED = 1, + KTLS_MBUF_CRYPTO_ST_DECRYPTED = -1, + KTLS_MBUF_CRYPTO_ST_SHAREDMBUF = -2, +} ktls_mbuf_crypto_st_t; + struct ktls_wq { struct mtx mtx; STAILQ_HEAD(, mbuf) m_head; @@ -2393,26 +2400,21 @@ tls13_find_record_type(struct ktls_session *tls, struct mbuf *m, int tls_len, } /* - * Check if a mbuf chain is fully decrypted at the given offset and - * length. Returns KTLS_MBUF_CRYPTO_ST_DECRYPTED if all data is - * decrypted. KTLS_MBUF_CRYPTO_ST_MIXED if there is a mix of encrypted - * and decrypted data. KTLS_MBUF_CRYPTO_ST_ENCRYPTED if all data is - * encrypted. KTLS_MBUF_CRYPTO_ST_SHAREDMBUF if any mbuf points at + * Check if a mbuf chain is fully decrypted. Returns + * KTLS_MBUF_CRYPTO_ST_DECRYPTED if all data is decrypted. + * KTLS_MBUF_CRYPTO_ST_MIXED if there is a mix of encrypted and + * decrypted data. KTLS_MBUF_CRYPTO_ST_ENCRYPTED if all data is + * encrypted. KTLS_MBUF_CRYPTO_ST_SHAREDMBUF if any mbuf points at * shared data that must not be modified in place (non-anonymous * M_EXTPG or sendfile M_EXT buffers). */ -ktls_mbuf_crypto_st_t -ktls_mbuf_crypto_state(struct mbuf *mb, int offset, int len) +static ktls_mbuf_crypto_st_t +ktls_mbuf_crypto_state(struct mbuf *mb) { - int m_flags_ored = 0; - int m_flags_anded = -1; + bool seen_decrypted, seen_encrypted; - for (; mb != NULL; mb = mb->m_next) { - if (offset < mb->m_len) - break; - offset -= mb->m_len; - } - offset += len; + seen_decrypted = false; + seen_encrypted = false; for (; mb != NULL; mb = mb->m_next) { if ((mb->m_flags & M_EXTPG) != 0 && @@ -2422,19 +2424,16 @@ ktls_mbuf_crypto_state(struct mbuf *mb, int offset, int len) mb->m_ext.ext_type == EXT_SFBUF) return (KTLS_MBUF_CRYPTO_ST_SHAREDMBUF); - m_flags_ored |= mb->m_flags; - m_flags_anded &= mb->m_flags; - - if (offset <= mb->m_len) - break; - offset -= mb->m_len; + if (mb->m_flags & M_DECRYPTED) + seen_decrypted = true; + else + seen_encrypted = true; } - MPASS(mb != NULL || offset == 0); - if ((m_flags_ored ^ m_flags_anded) & M_DECRYPTED) + if (seen_decrypted && seen_encrypted) return (KTLS_MBUF_CRYPTO_ST_MIXED); else - return ((m_flags_ored & M_DECRYPTED) ? + return (seen_decrypted ? KTLS_MBUF_CRYPTO_ST_DECRYPTED : KTLS_MBUF_CRYPTO_ST_ENCRYPTED); } @@ -2578,7 +2577,7 @@ ktls_decrypt(struct socket *so) SOCKBUF_UNLOCK(sb); /* get crypto state for this TLS record */ - state = ktls_mbuf_crypto_state(data, 0, tls_len); + state = ktls_mbuf_crypto_state(data); switch (state) { case KTLS_MBUF_CRYPTO_ST_MIXED: diff --git a/sys/sys/ktls.h b/sys/sys/ktls.h index 8e5950b8e2b4..0d760b0907fb 100644 --- a/sys/sys/ktls.h +++ b/sys/sys/ktls.h @@ -238,13 +238,6 @@ struct ktls_session { extern unsigned int ktls_ifnet_max_rexmit_pct; -typedef enum { - KTLS_MBUF_CRYPTO_ST_MIXED = 0, - KTLS_MBUF_CRYPTO_ST_ENCRYPTED = 1, - KTLS_MBUF_CRYPTO_ST_DECRYPTED = -1, - KTLS_MBUF_CRYPTO_ST_SHAREDMBUF = -2, -} ktls_mbuf_crypto_st_t; - void ktls_check_rx(struct sockbuf *sb); void ktls_cleanup_tls_enable(struct tls_enable *tls); int ktls_copyin_tls_enable(struct sockopt *sopt, struct tls_enable *tls); @@ -260,7 +253,6 @@ int ktls_get_rx_mode(struct socket *so, int *modep); int ktls_get_tx_mode(struct socket *so, int *modep); int ktls_get_rx_sequence(struct inpcb *inp, uint32_t *tcpseq, uint64_t *tlsseq); void ktls_input_ifp_mismatch(struct sockbuf *sb, struct ifnet *ifp); -ktls_mbuf_crypto_st_t ktls_mbuf_crypto_state(struct mbuf *mb, int offset, int len); #ifdef RATELIMIT int ktls_modify_txrtlmt(struct ktls_session *tls, uint64_t max_pacing_rate); #endif