From: netdev-bot+sashiko@kernel.org
To: daniel.zahka@gmail.com
Cc: edumazet@google.com, ncardwell@google.com, kuniyu@google.com,
davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
horms@kernel.org, willemdebruijn.kernel@gmail.com,
andrew+netdev@lunn.ch, shuah@kernel.org, willemb@google.com,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH net v2 1/2] net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb()
Date: Wed, 16 Sep 2026 23:13:14 +0000 [thread overview]
Message-ID: <178960039456.22033.8739239860645875280@kernel.org> (raw)
In-Reply-To: <20260915-psp-ktls-fix-v2-1-0eedc3b148ec@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 0 · Low: 1
- [Low] The patch adds a new, user-visible restriction to two already-
shipped interfaces without updating Documentation/networking/psp.rst:…
--
net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb()
This makes PSP and TCP ULPs mutually exclusive, since PSP and TLS both use
skb->decrypted and sk->sk_validate_xmit_skb(). A new helper
sk_has_decrypt_user() is added and checked from both __tcp_set_ulp() and
psp_sock_assoc_set_rx().
> diff --git a/net/core/sock.c b/net/core/sock.c
> index fa60b7494c586..9489d9c479493 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
[ ... ]
> @@ -2670,6 +2671,12 @@ void sk_setup_caps(struct sock *sk, struct dst_entry *dst)
> }
> EXPORT_SYMBOL_GPL(sk_setup_caps);
>
> +bool sk_has_decrypt_user(const struct sock *sk)
> +{
> + return psp_sk_assoc(sk) ||
> + (sk_is_inet(sk) && inet_csk_has_ulp(sk)); /* for tls */
> +}
> +
> /*
> * Simple resource managers for sockets.
> */
> diff --git a/net/ipv4/tcp_ulp.c b/net/ipv4/tcp_ulp.c
> index 2aa442128630e..b58045df101e5 100644
> --- a/net/ipv4/tcp_ulp.c
> +++ b/net/ipv4/tcp_ulp.c
> @@ -136,6 +136,10 @@ static int __tcp_set_ulp(struct sock *sk, const struct tcp_ulp_ops *ulp_ops)
> if (icsk->icsk_ulp_ops)
> goto out_err;
>
> + err = -EINVAL;
> + if (sk_has_decrypt_user(sk))
> + goto out_err;
> +
> if (sk->sk_socket)
> clear_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags);
>
> diff --git a/net/psp/psp_sock.c b/net/psp/psp_sock.c
> index 1a2a6b7516b0f..e9b53eedf8dba 100644
> --- a/net/psp/psp_sock.c
> +++ b/net/psp/psp_sock.c
> @@ -143,6 +143,10 @@ int psp_sock_assoc_set_rx(struct sock *sk, struct psp_assoc *pas,
> NL_SET_ERR_MSG(extack, "Socket already has PSP state");
> err = -EBUSY;
> goto exit_unlock;
> + } else if (sk_has_decrypt_user(sk)) {
> + NL_SET_ERR_MSG(extack, "Socket has incompatible state");
> + err = -EINVAL;
> + goto exit_unlock;
> }
[Severity: Low]
Should Documentation/networking/psp.rst be updated along with this?
Two already-shipped interfaces grow a new failure mode here:
psp_sock_assoc_set_rx() now returns -EINVAL for the rx-assoc netlink
command, and __tcp_set_ulp() now returns -EINVAL for
setsockopt(TCP_ULP).
The "Securing a connection" section enumerates the restrictions of the
rx-assoc/tx-assoc sequence:
PSP encryption is currently only supported for TCP connections.
Rx and Tx keys are allocated separately. First the ``rx-assoc``
Netlink command needs to be issued, specifying a target TCP socket.
but does not mention that a socket with a ULP attached is now rejected.
The "User facing API" section also suggests a TLS-then-PSP bootstrap:
The expectation is that higher layer protocols will take care of
protocol and key negotiation. For example one may use TLS key exchange,
announce the PSP capability, and switch to PSP if both endpoints
are PSP-capable.
and "Kernel implementation notes" says PSP "follows the TLS offload more
closely ... and the use of skb->decrypted", with nothing stating that kTLS
and PSP can no longer share a socket.
One more thing worth spelling out in the docs: the check is not restricted
to TLS. inet_csk_has_ulp() only tests icsk_ulp_ops, so any registered TCP
ULP blocks rx-assoc, which is broader than the subject line suggests. The
commit message explains this is intentional, but nothing in-tree tells
userspace about it.
The follow-up patch in the series ("selftests: drv-net: psp: test PSP and
TCP ULP mutual exclusion") adds tests for both directions but does not
touch Documentation/, so the gap remains at the end of the series.
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260915-psp-ktls-fix-v2-0-0eedc3b148ec%40gmail.com
next prev parent reply other threads:[~2026-09-16 23:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 23:11 [PATCH net v2 0/2] " Daniel Zahka
2026-09-15 23:11 ` [PATCH net v2 1/2] " Daniel Zahka
2026-09-16 23:13 ` netdev-bot+sashiko [this message]
2026-09-16 23:39 ` Daniel Zahka
2026-09-17 0:21 ` Willem de Bruijn
2026-09-15 23:11 ` [PATCH net v2 2/2] selftests: drv-net: psp: test PSP and TCP ULP mutual exclusion Daniel Zahka
2026-09-16 23:13 ` netdev-bot+sashiko
2026-09-17 0:11 ` Daniel Zahka
2026-09-17 0:26 ` Willem de Bruijn
2026-09-17 2:30 ` [PATCH net v2 0/2] net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb() patchwork-bot+netdevbpf
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=178960039456.22033.8739239860645875280@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=daniel.zahka@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=ncardwell@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®