Re: [PATCH net] tls: check the right open record in TLS_TX_MAX_PAYLOAD_LEN
From: Wilfred Mallawa
Date: Mon Oct 19 2026 - 19:37:38 EST
On Mon, 2026-10-19 at 16:26 -0600, Rishikesh Jethwani wrote:
>
> net/tls/tls_main.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
> index fbb274287aa5..8f11b8629492 100644
> --- a/net/tls/tls_main.c
> +++ b/net/tls/tls_main.c
> @@ -837,12 +837,23 @@ static int
> do_tls_setsockopt_tx_payload_len(struct sock *sk, sockptr_t optval,
> unsigned int optlen)
> {
> struct tls_context *ctx = tls_get_ctx(sk);
> - struct tls_sw_context_tx *sw_ctx = tls_sw_ctx_tx(ctx);
> u16 value;
> bool tls_13 = ctx->prot_info.version == TLS_1_3_VERSION;
>
> - if (sw_ctx && sw_ctx->open_rec)
> - return -EBUSY;
> + /* Both TX paths size the record they are filling against
> + * tx_max_payload_len, so refuse to change it under an open
> record.
> + * priv_ctx_tx is a different struct for each TX
> configuration.
> + */
> + switch (ctx->tx_conf) {
> + case TLS_SW:
> + if (tls_sw_ctx_tx(ctx)->open_rec)
> + return -EBUSY;
> + break;
> + case TLS_HW:
> + if (tls_offload_ctx_tx(ctx)->open_record)
> + return -EBUSY;
> + break;
> + }
>
Ah good catch!
Reviewed-by: Wilfred Mallawa <wilfred.mallawa@xxxxxxx>