]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tls: Factor tls_strp_msg_consume() from tls_strp_msg_done()
authorChuck Lever <chuck.lever@oracle.com>
Thu, 4 Jun 2026 17:48:27 +0000 (13:48 -0400)
committerJakub Kicinski <kuba@kernel.org>
Tue, 9 Jun 2026 03:10:21 +0000 (20:10 -0700)
tls_strp_msg_done() conflates releasing the current record with
checking for the next one via tls_strp_check_rcv(). A subsequent
patch needs to release a record without immediately triggering
that check, so the release step is separated into
tls_strp_msg_consume(). tls_strp_msg_done() is preserved as a
wrapper for existing callers.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://patch.msgid.link/20260604-tls-read-sock-v12-4-b114efa6e3e2@oracle.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/tls/tls.h
net/tls/tls_strp.c

index 12f44cb649c964f8fbba26afeed86e2323ccaba7..cb0091e03f41728cce09d8b020dfe803e461f332 100644 (file)
@@ -194,6 +194,7 @@ int tls_strp_init(struct tls_strparser *strp, struct sock *sk);
 void tls_strp_data_ready(struct tls_strparser *strp);
 
 void tls_strp_check_rcv(struct tls_strparser *strp);
+void tls_strp_msg_consume(struct tls_strparser *strp);
 void tls_strp_msg_done(struct tls_strparser *strp);
 
 int tls_rx_msg_size(struct tls_strparser *strp, struct sk_buff *skb);
index c72e88317627300089b2cde3ed9d5a7bb38bc347..e7aaee6efe6e9d70086cc50b0dd711394f532385 100644 (file)
@@ -581,7 +581,12 @@ static void tls_strp_work(struct work_struct *w)
        release_sock(strp->sk);
 }
 
-void tls_strp_msg_done(struct tls_strparser *strp)
+/* Release the current record without triggering a check for the
+ * next record. Callers must invoke tls_strp_check_rcv() before
+ * releasing the socket lock, or queued data will stall until the
+ * next tls_strp_data_ready() event.
+ */
+void tls_strp_msg_consume(struct tls_strparser *strp)
 {
        WARN_ON(!strp->stm.full_len);
 
@@ -592,7 +597,11 @@ void tls_strp_msg_done(struct tls_strparser *strp)
 
        WRITE_ONCE(strp->msg_ready, 0);
        memset(&strp->stm, 0, sizeof(strp->stm));
+}
 
+void tls_strp_msg_done(struct tls_strparser *strp)
+{
+       tls_strp_msg_consume(strp);
        tls_strp_check_rcv(strp);
 }