[PATCH net 0/2] net: psp: preserve SKB_EXT_PSP across packet scrubbing
From: Wei Wang
Date: Sun Oct 25 2026 - 00:05:46 EST
When a virtual interface such as netkit is associated with a PSP device
in another network namespace via PSP_CMD_DEV_ASSOC, incoming PSP packets
decapsulated on the physical device lose their SKB_EXT_PSP extension
when scrubbed during cross-namespace redirection (e.g. skb_do_redirect()
calling skb_scrub_packet()). As a result, __psp_sk_rx_policy_check()
rejects incoming PSP-encrypted TCP data segments at the socket layer.
This gap slipped through the existing psp.py selftests because both
_data_basic_send() and _data_basic_send_netkit_psp_assoc() only sent a
unidirectional data stream from the test socket to psp_responder; the
returning pure TCP ACKs had SKB_EXT_PSP stripped by skb_scrub_packet(),
but were still accepted by __psp_sk_rx_policy_check() while peer_tx was
unset.
Patch 1 (originally from Jakub Sitnicki's BPF skb extension series [1])
introduces skb_ext_scrub() to selectively preserve SKB_EXT_PSP during
skb_scrub_packet().
Patch 2 updates the psp.py selftests to exercise bidirectional PSP data
transfer using psp_responder's "data echo" command in both direct and
netkit dev-assoc test cases.
[1] https://lore.kernel.org/netdev/20260910-bpf-meta-inside-skb-ext-v2-3-0b21e42180b0@xxxxxxxxxxxxxx/
Wei Wang (2):
net: Make PSP skb extension survive packet scrubbing
selftests/net: psp: test bidirectional data transfer
include/linux/skbuff.h | 2 ++
net/core/skbuff.c | 22 ++++++++++++++++++++--
tools/testing/selftests/drivers/net/psp.py | 8 ++++++++
3 files changed, 30 insertions(+), 2 deletions(-)
--
2.56.0.257.gf7497c7d27-goog