From: Tariq Toukan <tariqt@nvidia.com>
To: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, <netdev@vger.kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
Sabrina Dubroca <sd@queasysnail.net>
Cc: Aleksandr Loktionov <aleksandr.loktionov@intel.com>,
Alexei Lazar <alazar@nvidia.com>,
Boris Pismenny <borisp@nvidia.com>,
Carolina Jubran <cjubran@nvidia.com>, Chris Mi <cmi@nvidia.com>,
Cosmin Ratiu <cratiu@nvidia.com>,
Daniel Zahka <daniel.zahka@gmail.com>,
Doruk Tan Ozturk <doruk@0sec.ai>,
Dragos Tatulea <dtatulea@nvidia.com>,
Gal Pressman <gal@nvidia.com>,
Jacob Keller <Jacob.e.keller@intel.com>,
Jianbo Liu <jianbol@nvidia.com>, Kees Cook <kees@kernel.org>,
Lama Kayal <lkayal@nvidia.com>, Leon Romanovsky <leon@kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-kselftest@vger.kernel.org>,
<linux-rdma@vger.kernel.org>, Mark Bloch <mbloch@nvidia.com>,
"Patrisious Haddad" <phaddad@nvidia.com>,
Raed Salem <raeds@nvidia.com>,
Rahul Rameshbabu <rrameshbabu@nvidia.com>,
Saeed Mahameed <saeedm@nvidia.com>, Shuah Khan <shuah@kernel.org>,
Shuah Khan <skhan@linuxfoundation.org>,
Simon Horman <horms@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>,
Stanislav Fomichev <sdf.kernel@gmail.com>,
Tariq Toukan <tariqt@nvidia.com>
Subject: [PATCH net-next V2 12/13] selftests: drv-net: psp: Fix responder parsing
Date: Tue, 4 Aug 2026 11:35:34 +0300 [thread overview]
Message-ID: <20260804083535.2946459-13-tariqt@nvidia.com> (raw)
In-Reply-To: <20260804083535.2946459-1-tariqt@nvidia.com>
From: Cosmin Ratiu <cratiu@nvidia.com>
The psp_responder accumulates received data in a buffer and parses
received messages from it, but a message that's split in two across
command and argument (e.g. "psp conn" and "1") will permanently choke
the parser, because the stand-alone arg is never parsed after discarding
the command.
This is mostly a theoretical issue since a sent TCP segment from psp.py
of the form "psp conn 1" will arrive in one piece to psp_responder, but
the AI tools complain about the possibility that it might get split, so
fix it now before another command with an argument is added in the next
patch.
Signed-off-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
.../selftests/drivers/net/psp_responder.c | 38 +++++++++----------
1 file changed, 17 insertions(+), 21 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/psp_responder.c b/tools/testing/selftests/drivers/net/psp_responder.c
index a26e7628bbb1..985161eb482b 100644
--- a/tools/testing/selftests/drivers/net/psp_responder.c
+++ b/tools/testing/selftests/drivers/net/psp_responder.c
@@ -185,22 +185,22 @@ run_session(struct ynl_sock *ys, struct opts *opts,
}
off += n;
- n = off;
#define __consume(sz) \
({ \
- if (n == (sz)) { \
- off = 0; \
- } else { \
- off -= (sz); \
- memmove(buf, &buf[(sz)], off); \
- } \
+ off -= (sz); \
+ memmove(buf, &buf[(sz)], off); \
})
-#define cmd(_name) \
+/* Only match once the command and its _extra_sz byte payload are both
+ * buffered, otherwise a split read would consume the name and strand
+ * the payload, desynchronizing the parser for good.
+ */
+#define cmd(_name, _extra_sz) \
({ \
ssize_t sz = sizeof(_name); \
- bool match = n >= sz && !memcmp(buf, _name, sz); \
+ bool match = off >= sz + (_extra_sz) && \
+ !memcmp(buf, _name, sz); \
\
if (match) { \
dbg("command: " _name "\n"); \
@@ -213,10 +213,10 @@ run_session(struct ynl_sock *ys, struct opts *opts,
do {
consumed = false;
- if (cmd("read len"))
+ if (cmd("read len", 0))
send_str(comm_sock, data_read);
- if (cmd("data echo")) {
+ if (cmd("data echo", 0)) {
if (data_sock >= 0)
send(data_sock, "echo", 5,
MSG_WAITALL);
@@ -224,7 +224,7 @@ run_session(struct ynl_sock *ys, struct opts *opts,
fprintf(stderr, "WARN: echo but no data sock\n");
send_ack(comm_sock);
}
- if (cmd("data close")) {
+ if (cmd("data close", 0)) {
if (data_sock >= 0) {
close(data_sock);
data_sock = -1;
@@ -233,26 +233,22 @@ run_session(struct ynl_sock *ys, struct opts *opts,
race_close = true;
}
}
- if (cmd("conn psp")) {
+ if (cmd("conn psp", 2)) {
if (accept_cfg != ACCEPT_CFG_NONE)
fprintf(stderr, "WARN: old conn config still set!\n");
accept_cfg = ACCEPT_CFG_PSP;
send_ack(comm_sock);
/* next two bytes are versions */
- if (off >= 2) {
- memcpy(&psp_vers, buf, 2);
- __consume(2);
- } else {
- fprintf(stderr, "WARN: short conn psp command!\n");
- }
+ memcpy(&psp_vers, buf, 2);
+ __consume(2);
}
- if (cmd("conn clr")) {
+ if (cmd("conn clr", 0)) {
if (accept_cfg != ACCEPT_CFG_NONE)
fprintf(stderr, "WARN: old conn config still set!\n");
accept_cfg = ACCEPT_CFG_CLEAR;
send_ack(comm_sock);
}
- if (cmd("exit"))
+ if (cmd("exit", 0))
should_quit = true;
#undef cmd
--
2.44.0
next prev parent reply other threads:[~2026-08-04 8:38 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-04 8:35 [PATCH net-next V2 00/13] net/mlx5e: Add support for HW-GRO to PSP Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 01/13] net/mlx5e: Generalize TC <-> IPsec mutual exclusion Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 02/13] net/mlx5e: ipsec: Block TC offload when IPsec is enabled Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 03/13] net/mlx5e: psp: Block TC offload when PSP " Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 04/13] net/mlx5e: macsec: Block TC offload when MACsec " Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 05/13] net/mlx5e: psp: Move RX marker from ft_metadata to flow_tag Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 06/13] net/mlx5e: ipsec: " Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 07/13] net/mlx5e: macsec: " Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 08/13] net/mlx5e: psp: Handle HW-decapsulated RX PSP packets Tariq Toukan
2026-08-04 17:34 ` Daniel Zahka
2026-08-10 11:46 ` Cosmin Ratiu
2026-08-04 8:35 ` [PATCH net-next V2 09/13] net/mlx5e: psp: Add an rx_decap steering table Tariq Toukan
2026-08-04 17:19 ` Daniel Zahka
2026-08-10 11:48 ` Cosmin Ratiu
2026-08-04 8:35 ` [PATCH net-next V2 10/13] net/mlx5e: shampo: Flush session on PSP mismatch Tariq Toukan
2026-08-04 8:35 ` [PATCH net-next V2 11/13] net/mlx5e: psp: Dynamically reconfigure based on SHAMPO mode Tariq Toukan
2026-08-04 8:35 ` Tariq Toukan [this message]
2026-08-08 0:58 ` [PATCH net-next V2 12/13] selftests: drv-net: psp: Fix responder parsing Jakub Kicinski
2026-08-10 11:42 ` Cosmin Ratiu
2026-08-10 20:33 ` Jakub Kicinski
2026-08-04 8:35 ` [PATCH net-next V2 13/13] selftests: drv-net: psp: Add a test for PSP with HW-GRO Tariq Toukan
2026-08-04 18:05 ` Daniel Zahka
2026-08-10 11:52 ` Cosmin Ratiu
2026-08-08 1:00 ` Jakub Kicinski
2026-08-10 14:30 ` Cosmin Ratiu
2026-08-10 20:31 ` Jakub Kicinski
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=20260804083535.2946459-13-tariqt@nvidia.com \
--to=tariqt@nvidia.com \
--cc=Jacob.e.keller@intel.com \
--cc=alazar@nvidia.com \
--cc=aleksandr.loktionov@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=borisp@nvidia.com \
--cc=cjubran@nvidia.com \
--cc=cmi@nvidia.com \
--cc=cratiu@nvidia.com \
--cc=daniel.zahka@gmail.com \
--cc=davem@davemloft.net \
--cc=doruk@0sec.ai \
--cc=dtatulea@nvidia.com \
--cc=edumazet@google.com \
--cc=gal@nvidia.com \
--cc=horms@kernel.org \
--cc=jianbol@nvidia.com \
--cc=kees@kernel.org \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=lkayal@nvidia.com \
--cc=mbloch@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=phaddad@nvidia.com \
--cc=raeds@nvidia.com \
--cc=rrameshbabu@nvidia.com \
--cc=saeedm@nvidia.com \
--cc=sd@queasysnail.net \
--cc=sdf.kernel@gmail.com \
--cc=sdf@fomichev.me \
--cc=shuah@kernel.org \
--cc=skhan@linuxfoundation.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.