BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names
@ 2026-08-06 21:11 Vineet Gupta
  2026-08-06 21:17 ` sashiko-bot
  2026-08-06 21:53 ` Ihor Solodrai
  0 siblings, 2 replies; 5+ messages in thread
From: Vineet Gupta @ 2026-08-06 21:11 UTC (permalink / raw)
  To: bpf, Ihor Solodrai; +Cc: Vineet Gupta

The traffic monitor names its capture logs after the test and subtest
being run, replacing '/' and ' ' so the result is usable as a file name.
Test names are free form though, and other characters make it through.
A subtest called "INET4: bpf timestamping" produces

  /tmp/tmon_pcap/packets-125-15-net_timestamping__INET4:_bpf_timestamping-net_timestamping_ns.log

CI systems that collect these logs as artifacts reject such names.
GitHub Actions' upload-artifact fails the upload with

  Error: The path for one of the files in artifact is not valid:
  ... Contains the following character:  Colon :

Replace the whole set of awkward characters in one pass rather than
adding another strchr() loop per character. Note the loop tests *p
before calling strchr(), so the terminating NUL is never passed to it.

This came up as a side error/annoyance when trying to re-enable BPF-GCC
CI runs [1]. The CI side already has path name normalization and needs
some tweaking as well, however fixing it at the source also makes sense.

Fixes: f52403b6bfea ("selftests/bpf: Add traffic monitor functions.")
Link: https://github.com/kernel-patches/vmtest/actions/runs/30710914503/job/91399011388 [1]
Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
---
 tools/testing/selftests/bpf/network_helpers.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
index db935a9d9fc1..3818cec354a0 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -1142,10 +1142,13 @@ static void encode_test_name(char *buf, size_t len, const char *test_name, const
 		snprintf(buf, len, "%s__%s", test_name, subtest_name);
 	else
 		snprintf(buf, len, "%s", test_name);
-	while ((p = strchr(buf, '/')))
-		*p = '_';
-	while ((p = strchr(buf, ' ')))
-		*p = '_';
+	/* Test names are free form, so replace anything that is awkward in a
+	 * file name. Besides the path separator, this covers the characters
+	 * rejected by CI systems collecting these logs as artifacts.
+	 */
+	for (p = buf; *p; p++)
+		if (strchr("/ \":<>|*?\r\n", *p))
+			*p = '_';
 }
 
 #define PCAP_DIR "/tmp/tmon_pcap"
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names
  2026-08-06 21:11 [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names Vineet Gupta
@ 2026-08-06 21:17 ` sashiko-bot
  2026-08-06 21:37   ` Vineet Gupta
  2026-08-06 21:53 ` Ihor Solodrai
  1 sibling, 1 reply; 5+ messages in thread
From: sashiko-bot @ 2026-08-06 21:17 UTC (permalink / raw)
  To: Vineet Gupta; +Cc: bpf

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The backslash character `\` is missing from the sanitization string, leaving artifact names vulnerable to rejection by GitHub Actions.
- [Low] The newly introduced multi-line comment violates the BPF subsystem's strict comment style guidelines.
--

--- Patch [1]: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names ---
commit 4eb40c6024aab5f28e7a52af3fba116cbdeff427
Author: Vineet Gupta <vineet.gupta@linux.dev>

selftests/bpf: Sanitize traffic monitor log file names

The traffic monitor names its capture logs after the test and subtest
being run, replacing '/' and ' ' so the result is usable as a file name.
This patch replaces the whole set of awkward characters in one pass to
fix artifact upload failures in CI systems like GitHub Actions.

Link: https://github.com/kernel-patches/vmtest/actions/runs/30710914503/job/91399011388 [1]

> diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
> index db935a9d9fc1a..3818cec354a0d 100644
> --- a/tools/testing/selftests/bpf/network_helpers.c
> +++ b/tools/testing/selftests/bpf/network_helpers.c
> @@ -1142,10 +1142,13 @@ static void encode_test_name(char *buf, size_t len, const char *test_name, const
>  		snprintf(buf, len, "%s__%s", test_name, subtest_name);
>  	else
>  		snprintf(buf, len, "%s", test_name);
> -	while ((p = strchr(buf, '/')))
> -		*p = '_';
> -	while ((p = strchr(buf, ' ')))
> -		*p = '_';
> +	/* Test names are free form, so replace anything that is awkward in a
> +	 * file name. Besides the path separator, this covers the characters
> +	 * rejected by CI systems collecting these logs as artifacts.
> +	 */

[Severity: Low]
This isn't a bug, but does this multi-line comment in encode_test_name()
conflict with the BPF subsystem's comment style guidelines? The opening /*
is typically expected to be placed on its own line.

> +	for (p = buf; *p; p++)
> +		if (strchr("/ \":<>|*?\r\n", *p))

[Severity: Medium]
Since this is meant to cover characters rejected by CI systems like GitHub
Actions, should the backslash character '\\' also be included in this
sanitization string?

If a test or subtest name contains a backslash, it appears the artifact
upload could still fail.

> +			*p = '_';
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260806211105.3307932-1-vineet.gupta@linux.dev?part=1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names
  2026-08-06 21:17 ` sashiko-bot
@ 2026-08-06 21:37   ` Vineet Gupta
  0 siblings, 0 replies; 5+ messages in thread
From: Vineet Gupta @ 2026-08-06 21:37 UTC (permalink / raw)
  To: sashiko-reviews; +Cc: bpf

On 8/6/26 2:17 PM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
> - [Medium] The backslash character `\` is missing from the sanitization string, leaving artifact names vulnerable to rejection by GitHub Actions.
> - [Low] The newly introduced multi-line comment violates the BPF subsystem's strict comment style guidelines.
> --
>
> --- Patch [1]: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names ---
> commit 4eb40c6024aab5f28e7a52af3fba116cbdeff427
> Author: Vineet Gupta <vineet.gupta@linux.dev>
>
> selftests/bpf: Sanitize traffic monitor log file names
>
> The traffic monitor names its capture logs after the test and subtest
> being run, replacing '/' and ' ' so the result is usable as a file name.
> This patch replaces the whole set of awkward characters in one pass to
> fix artifact upload failures in CI systems like GitHub Actions.
>
> Link: https://github.com/kernel-patches/vmtest/actions/runs/30710914503/job/91399011388 [1]
>
>> diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
>> index db935a9d9fc1a..3818cec354a0d 100644
>> --- a/tools/testing/selftests/bpf/network_helpers.c
>> +++ b/tools/testing/selftests/bpf/network_helpers.c
>> @@ -1142,10 +1142,13 @@ static void encode_test_name(char *buf, size_t len, const char *test_name, const
>>   		snprintf(buf, len, "%s__%s", test_name, subtest_name);
>>   	else
>>   		snprintf(buf, len, "%s", test_name);
>> -	while ((p = strchr(buf, '/')))
>> -		*p = '_';
>> -	while ((p = strchr(buf, ' ')))
>> -		*p = '_';
>> +	/* Test names are free form, so replace anything that is awkward in a
>> +	 * file name. Besides the path separator, this covers the characters
>> +	 * rejected by CI systems collecting these logs as artifacts.
>> +	 */
> [Severity: Low]
> This isn't a bug, but does this multi-line comment in encode_test_name()
> conflict with the BPF subsystem's comment style guidelines? The opening /*
> is typically expected to be placed on its own line.

It follows the pre-existing convention in this file and for netdev in 
general.
I can fix if maintainers prefer that.

>> +	for (p = buf; *p; p++)
>> +		if (strchr("/ \":<>|*?\r\n", *p))
> [Severity: Medium]
> Since this is meant to cover characters rejected by CI systems like GitHub
> Actions, should the backslash character '\\' also be included in this
> sanitization string?
>
> If a test or subtest name contains a backslash, it appears the artifact
> upload could still fail.

The original intention was parity with libbpf-ci: 
run-vmtest/normalize-paths-for-github.sh but agree adding the backslash 
makes it more robust.

Thx,
-Vineet

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names
  2026-08-06 21:11 [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names Vineet Gupta
  2026-08-06 21:17 ` sashiko-bot
@ 2026-08-06 21:53 ` Ihor Solodrai
  2026-08-06 21:57   ` Vineet Gupta
  1 sibling, 1 reply; 5+ messages in thread
From: Ihor Solodrai @ 2026-08-06 21:53 UTC (permalink / raw)
  To: Vineet Gupta, bpf

On 8/6/26 2:11 PM, Vineet Gupta wrote:
> The traffic monitor names its capture logs after the test and subtest
> being run, replacing '/' and ' ' so the result is usable as a file name.
> Test names are free form though, and other characters make it through.
> A subtest called "INET4: bpf timestamping" produces
> 
>   /tmp/tmon_pcap/packets-125-15-net_timestamping__INET4:_bpf_timestamping-net_timestamping_ns.log
> 
> CI systems that collect these logs as artifacts reject such names.
> GitHub Actions' upload-artifact fails the upload with
> 
>   Error: The path for one of the files in artifact is not valid:
>   ... Contains the following character:  Colon :
> 
> Replace the whole set of awkward characters in one pass rather than
> adding another strchr() loop per character. Note the loop tests *p
> before calling strchr(), so the terminating NUL is never passed to it.
> 
> This came up as a side error/annoyance when trying to re-enable BPF-GCC
> CI runs [1]. The CI side already has path name normalization and needs
> some tweaking as well, however fixing it at the source also makes sense.
> 
> Fixes: f52403b6bfea ("selftests/bpf: Add traffic monitor functions.")
> Link: https://github.com/kernel-patches/vmtest/actions/runs/30710914503/job/91399011388 [1]
> Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
> ---
>  tools/testing/selftests/bpf/network_helpers.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
> index db935a9d9fc1..3818cec354a0 100644
> --- a/tools/testing/selftests/bpf/network_helpers.c
> +++ b/tools/testing/selftests/bpf/network_helpers.c
> @@ -1142,10 +1142,13 @@ static void encode_test_name(char *buf, size_t len, const char *test_name, const
>  		snprintf(buf, len, "%s__%s", test_name, subtest_name);
>  	else
>  		snprintf(buf, len, "%s", test_name);
> -	while ((p = strchr(buf, '/')))
> -		*p = '_';
> -	while ((p = strchr(buf, ' ')))
> -		*p = '_';
> +	/* Test names are free form, so replace anything that is awkward in a
> +	 * file name. Besides the path separator, this covers the characters
> +	 * rejected by CI systems collecting these logs as artifacts.
> +	 */
> +	for (p = buf; *p; p++)
> +		if (strchr("/ \":<>|*?\r\n", *p))

Hi Vineet,

We already do this on the CI side here:
https://github.com/libbpf/ci/blob/main/run-vmtest/normalize-paths-for-github.sh

The problem on the CI side is that the script is not executed
in some corner cases, like a VM timeout.

I don't think this change is necessary upstream: the paths are
technically valid, it's an issue for CI only due to github quirks.

> +			*p = '_';
>  }
>  
>  #define PCAP_DIR "/tmp/tmon_pcap"


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names
  2026-08-06 21:53 ` Ihor Solodrai
@ 2026-08-06 21:57   ` Vineet Gupta
  0 siblings, 0 replies; 5+ messages in thread
From: Vineet Gupta @ 2026-08-06 21:57 UTC (permalink / raw)
  To: Ihor Solodrai, bpf



On 8/6/26 2:53 PM, Ihor Solodrai wrote:
> On 8/6/26 2:11 PM, Vineet Gupta wrote:
>> The traffic monitor names its capture logs after the test and subtest
>> being run, replacing '/' and ' ' so the result is usable as a file name.
>> Test names are free form though, and other characters make it through.
>> A subtest called "INET4: bpf timestamping" produces
>>
>>    /tmp/tmon_pcap/packets-125-15-net_timestamping__INET4:_bpf_timestamping-net_timestamping_ns.log
>>
>> CI systems that collect these logs as artifacts reject such names.
>> GitHub Actions' upload-artifact fails the upload with
>>
>>    Error: The path for one of the files in artifact is not valid:
>>    ... Contains the following character:  Colon :
>>
>> Replace the whole set of awkward characters in one pass rather than
>> adding another strchr() loop per character. Note the loop tests *p
>> before calling strchr(), so the terminating NUL is never passed to it.
>>
>> This came up as a side error/annoyance when trying to re-enable BPF-GCC
>> CI runs [1]. The CI side already has path name normalization and needs
>> some tweaking as well, however fixing it at the source also makes sense.
>>
>> Fixes: f52403b6bfea ("selftests/bpf: Add traffic monitor functions.")
>> Link: https://github.com/kernel-patches/vmtest/actions/runs/30710914503/job/91399011388 [1]
>> Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
>> ---
>>   tools/testing/selftests/bpf/network_helpers.c | 11 +++++++----
>>   1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
>> index db935a9d9fc1..3818cec354a0 100644
>> --- a/tools/testing/selftests/bpf/network_helpers.c
>> +++ b/tools/testing/selftests/bpf/network_helpers.c
>> @@ -1142,10 +1142,13 @@ static void encode_test_name(char *buf, size_t len, const char *test_name, const
>>   		snprintf(buf, len, "%s__%s", test_name, subtest_name);
>>   	else
>>   		snprintf(buf, len, "%s", test_name);
>> -	while ((p = strchr(buf, '/')))
>> -		*p = '_';
>> -	while ((p = strchr(buf, ' ')))
>> -		*p = '_';
>> +	/* Test names are free form, so replace anything that is awkward in a
>> +	 * file name. Besides the path separator, this covers the characters
>> +	 * rejected by CI systems collecting these logs as artifacts.
>> +	 */
>> +	for (p = buf; *p; p++)
>> +		if (strchr("/ \":<>|*?\r\n", *p))
> Hi Vineet,
>
> We already do this on the CI side here:
> https://github.com/libbpf/ci/blob/main/run-vmtest/normalize-paths-for-github.sh
>
> The problem on the CI side is that the script is not executed
> in some corner cases, like a VM timeout.
>
> I don't think this change is necessary upstream: the paths are
> technically valid, it's an issue for CI only due to github quirks.

Yeah I've submitted that separately [1] - this was more of a preventive 
fix to not generate such file names in the first place.

Thx,
-Vineet

[1] https://github.com/kernel-patches/vmtest/pull/504

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-08-06 21:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-06 21:11 [PATCH bpf-next] selftests/bpf: Sanitize traffic monitor log file names Vineet Gupta
2026-08-06 21:17 ` sashiko-bot
2026-08-06 21:37   ` Vineet Gupta
2026-08-06 21:53 ` Ihor Solodrai
2026-08-06 21:57   ` Vineet Gupta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox