From: Simon Horman <horms@kernel.org>
To: Hyunwoo Kim <imv4bel@gmail.com>
Cc: john.fastabend@gmail.com, kuba@kernel.org, sd@queasysnail.net,
davem@davemloft.net, edumazet@google.com, pabeni@redhat.com,
netdev@vger.kernel.org
Subject: Re: [PATCH] net: tls: Use disable_delayed_work_sync() instead of cancel_delayed_work_sync() in tls_sw_cancel_work_tx()
Date: Tue, 17 Feb 2026 15:37:01 +0000 [thread overview]
Message-ID: <aZSLHaFj7k8DPmLG@horms.kernel.org> (raw)
In-Reply-To: <aZLotq3aZY0b-dI8@v4bel>
On Mon, Feb 16, 2026 at 06:51:50PM +0900, Hyunwoo Kim wrote:
> After cancel_delayed_work_sync() is called from tls_sk_proto_close(),
> tx_work_handler() can still be scheduled from paths such as the
> Delayed ACK handler or ksoftirqd.
> As a result, the tx_work_handler() worker may dereference a freed
> TLS object.
>
> To prevent this race condition, cancel_delayed_work_sync() is
> replaced with disable_delayed_work_sync().
>
> Fixes: f87e62d45e51 ("net/tls: remove close callback sock unlock/lock around TX work flush")
> Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Hi Hyunwoo,
Thanks for your patch(es).
Some feedback on process from my side.
You can read more about that at
https://docs.kernel.org/process/maintainer-netdev.html
* I think it would be good to mention how this problem was found.
* As a bug fix for code present in the net tree, it should be targeted
at that tree like this.
Subject: [PATCH net]: ...
* Looking over git history, it seems that an appropriate prefix
for patches for this code is 'tls: '
Subject [PATCH net]: tls: ...
* Also, please try to make the subject a bit more succinct
> ---
> net/tls/tls_sw.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
> index 9937d4c810f2..b1fa62de9dab 100644
> --- a/net/tls/tls_sw.c
> +++ b/net/tls/tls_sw.c
> @@ -2533,7 +2533,7 @@ void tls_sw_cancel_work_tx(struct tls_context *tls_ctx)
>
> set_bit(BIT_TX_CLOSING, &ctx->tx_bitmask);
> set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask);
> - cancel_delayed_work_sync(&ctx->tx_work.work);
> + disable_delayed_work_sync(&ctx->tx_work.work);
> }
>
> void tls_sw_release_resources_tx(struct sock *sk)
> --
> 2.43.0
> ---
>
> Dear,
>
> The following is a simplified scenario illustrating how each race can occur. Since tls_sw_cancel_work_tx() does not hold lock_sock(), it can race with tls_write_space().
> ```
> cpu0 cpu1
>
> tls_sk_proto_close()
> tls_sw_cancel_work_tx()
> tls_write_space()
> tls_sw_write_space()
> if (!test_and_set_bit(BIT_TX_SCHEDULED, &tx_ctx->tx_bitmask))
> set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask);
> cancel_delayed_work_sync(&ctx->tx_work.work);
> schedule_delayed_work(&tx_ctx->tx_work.work, 0);
> ```
I think that the text above would be best included in the patch description.
At least for me it is fundamental to understanding the problem.
>
> Best regards,
> Hyunwoo Kim
>
I see three similar patches on the mailing list.
The comments above go for them too.
And It would probably be useful to just handle one at a time,
to allow for proper feedback. Or bundle them in a patchset.
--
pw-bot: changes-requested
next prev parent reply other threads:[~2026-02-17 15:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-16 9:51 [PATCH] net: tls: Use disable_delayed_work_sync() instead of cancel_delayed_work_sync() in tls_sw_cancel_work_tx() Hyunwoo Kim
2026-02-17 15:37 ` Simon Horman [this message]
2026-02-17 16:46 ` Hyunwoo Kim
2026-02-18 9:34 ` Simon Horman
2026-02-18 9:36 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZSLHaFj7k8DPmLG@horms.kernel.org \
--to=horms@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=imv4bel@gmail.com \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sd@queasysnail.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.