From: Jiayuan Chen <jiayuan.chen@linux.dev>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Christopher Lusk <clusk@northecho.dev>,
John Fastabend <john.fastabend@gmail.com>,
Sabrina Dubroca <sd@queasysnail.net>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
netdev@vger.kernel.org, bpf@vger.kernel.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH net v3] net: tls: use sync AEAD for sk_msg BPF sockets
Date: Wed, 27 May 2026 13:09:44 +0800 [thread overview]
Message-ID: <4626d285-57ab-46c9-b75b-d56efe7417fc@linux.dev> (raw)
In-Reply-To: <20260526161101.691d4cb7@kernel.org>
On 5/27/26 7:11 AM, Jakub Kicinski wrote:
> On Tue, 26 May 2026 14:44:24 +0800 Jiayuan Chen wrote:
>> If async_capable is set to 1, the zerocopy path in tls_sw_sendmsg() is
>> skipped.
>> Unfortunately ktls with bpf_msg_pop_data() does not work correctly under
>> this
>> copy path.
>>
>> tls_clone_plaintext_msg() aliases msg_pl onto msg_en's plaintext area
>> (in-place encryption).
>>
>> BPF runs bpf_msg_pop_data(msg, 0, 2). This shifts msg_pl's SG entry
>> forward by 2 bytes.
>> The two SGs now point to the same page at different offsets. Physical
>> memory overlaps but the start of
>> address differ.
> Ugh, do you mean that the memcopy path is broken? There are other
> conditions under which we may fall into it than just !async_capable :(
> Small send with MSG_MORE is probably the easiest?
>
> So we need to fix that one way or the other.
Yes, the memcopy path is broken, but only when combined with sockmap's
pop helper.
msg_pl and msg_en share the underlying page:
msg_pl msg_pl end
^ ^
|------|------------------|-------|
| hdr | plaintext | tag |
|------|------------------|-------|
^ ^
| |
msg_en msg_en end
Before encryption, sge->offset += prot->prepend_size is applied
to msg_en so that the encryption's dst and src point to the same
block of memory.
But once pop has run — i.e. msg_pl's start advances — the encryption's
dst and src
are no longer the same.
crypto_ctr_crypt():
When dst and src have the same address, crypto saves the encryption
result into a
temporary buffer and then writes it back to dst.
When dst and src have different addresses, the crypto module treats them
as two
separate buffers and stops considering in-place mode.
it's complicated to process pop/push + head/mid/tail...
>> I think selecting a sync provider via mask = CRYPTO_ALG_ASYNC is
>> sufficient to
>> remove the -EINPROGRESS return path.
>>
>> May be time to remove skmsg from ktls? (disable by default first,
>> re-enable via a new ktls module_param?)
> Yes, we asked John F off-list to get his attention and I think there's
> only a vague plan to start using kTLS + sockmap, no current user
> (sorry if I misread / misremembered).
>
> module params aren't a great API. If we want to deprecate it let's just
> remove the integration in net-next. You have my vote..
next prev parent reply other threads:[~2026-05-27 5:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 2:51 [PATCH net v3] net: tls: use sync AEAD for sk_msg BPF sockets Christopher Lusk
2026-05-26 6:44 ` Jiayuan Chen
2026-05-26 23:11 ` Jakub Kicinski
2026-05-27 5:09 ` Jiayuan Chen [this message]
2026-05-27 19:16 ` John Fastabend
2026-05-28 23:47 ` Jakub Kicinski
2026-05-27 8:36 ` Sabrina Dubroca
2026-05-27 12:24 ` Christopher Lusk
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=4626d285-57ab-46c9-b75b-d56efe7417fc@linux.dev \
--to=jiayuan.chen@linux.dev \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=clusk@northecho.dev \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sd@queasysnail.net \
--cc=stable@vger.kernel.org \
/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.