lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d60860b4-e84b-48e1-87dd-4bd8203a69ad@linux.ibm.com>
Date: Tue, 18 Nov 2025 07:15:45 +0100
From: Thomas Richter <tmricht@...ux.ibm.com>
To: Namhyung Kim <namhyung@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-s390@...r.kernel.org,
        linux-perf-users@...r.kernel.org, acme@...nel.org,
        agordeev@...ux.ibm.com, gor@...ux.ibm.com, sumanthk@...ux.ibm.com,
        hca@...ux.ibm.com, japo@...ux.ibm.com
Subject: Re: [PATCH Linux-next] perf test: Fix test case perf trace BTF
 general tests

On 11/18/25 02:58, Namhyung Kim wrote:
> Hello,
> 
> On Mon, Nov 17, 2025 at 01:43:59PM +0100, Thomas Richter wrote:
>> The following test case fails on linux-next repo:
>>
>>  ❯ uname -a
>>  Linux s83lp47.lnxne.boe 6.18.0-20251116.rc5.git0.0f2995693867.63.\
>>       fc42.s390x+next #1 SMP Sun Nov 16 20:05:28 CET 2025 s390x GNU/Linux
>>
>>  # perf test -Fv 109
>>  --- start ---
>>  Checking if vmlinux BTF exists
>>  Testing perf trace's string augmentation
>>  Testing perf trace's buffer augmentation
>>  Buffer augmentation test failed, output:
>>  buffer content
>>  echo/23281 write(1, buffer conten, 15, "") = 15
>>  ---- end ----
>>  109: perf trace BTF general tests            : FAILED!
>>  #
>>
>> The root case is a changed output format on linux-next.
>> There is an addional "" string as forth parameter in the write()
>> line. Here is the detailed output on linux-repo.
>> Please note that this depends on the kernel and not on the perf tool.
> 
> Thanks for the report.  Do you know what the 4th arg is?  It'd be nice
> if you can dump the contents of the event format which is
> /sys/kernel/tracing/events/syscalls/sys_enter_write/format.
> 
> Thanks,
> Namhyung
> 

Here is the output from my x86 virtual machine with linux-next 20251114 tag.

bash-5.3# uname -a
Linux f43 6.18.0-rc5-next-20251114tmr-n #1 SMP PREEMPT_DYNAMIC Mon Nov 17 11:24:02 CET 2025 x86_64 GNU/Linux
bash-5.3# cat /sys/kernel/tracing/events/syscalls/sys_enter_write/format
name: sys_enter_write
ID: 758
format:
	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
	field:int common_pid;	offset:4;	size:4;	signed:1;

	field:int __syscall_nr;	offset:8;	size:4;	signed:1;
	field:unsigned int fd;	offset:16;	size:8;	signed:0;
	field:const char * buf;	offset:24;	size:8;	signed:0;
	field:size_t count;	offset:32;	size:8;	signed:0;
	field:__data_loc char[] __buf_val;	offset:40;	size:4;	signed:0;

print fmt: "fd: 0x%08lx, buf: 0x%08lx (%s), count: 0x%08lx", ((unsigned long)(REC->fd)), ((unsigned long)(REC->buf)), __print_dynamic_array(__buf_val, 1), ((unsigned long)(REC->count))
bash-5.3# 

Hope this helps.

>>
>> Output on linux next kernel:
>>  # uname -a
>>  Linux f43 6.18.0-rc5-next-20251114tmr-n #1 SMP PREEMPT_DYNAMIC ...
>>  # perf config trace.show_arg_names=false trace.show_duration=false \
>> 	trace.show_timestamp=false trace.args_alignment=0
>>  # ./perf trace --sort-events -e write --max-events=1 \
>> 	-- echo 'buffer content' 1>/dev/null
>>  echo/7676 write(1, buffer content\10, 15, "") = 15
>>  #
>>
>> Output on linux kernel:
>>  # uname -a
>>  Linux b3560002.lnxne.boe 6.18.0-rc5m-perf #6 ....
>>  # perf config trace.show_arg_names=false trace.show_duration=false \
>> 	trace.show_timestamp=false trace.args_alignment=0
>>  # ./perf trace --sort-events -e write --max-events=1 \
>> 	-- echo 'buffer content' 1>/dev/null
>>  echo/36932 write(1, buffer content\10, 15) = 15
>>  #
>>
>> Add the optional forth parameter in the extented regular expression to
>> accept both output formats.
>>
>> Output after:
>>  # ./perf test -Fv 'perf trace BTF general tests'
>>  --- start ---
>>  Checking if vmlinux BTF exists
>>  Testing perf trace's string augmentation
>>  Testing perf trace's buffer augmentation
>>  Testing perf trace's struct augmentation
>>  ---- end ----
>>  115: perf trace BTF general tests            : Ok
>>  #
>>
>> Signed-off-by: Thomas Richter <tmricht@...ux.ibm.com>
>> ---
>>  tools/perf/tests/shell/trace_btf_general.sh | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/tests/shell/trace_btf_general.sh b/tools/perf/tests/shell/trace_btf_general.sh
>> index ef2da806be6b..9cd6180062d8 100755
>> --- a/tools/perf/tests/shell/trace_btf_general.sh
>> +++ b/tools/perf/tests/shell/trace_btf_general.sh
>> @@ -39,7 +39,7 @@ trace_test_buffer() {
>>    echo "Testing perf trace's buffer augmentation"
>>    # echo will insert a newline (\10) at the end of the buffer
>>    output="$(perf trace --sort-events -e write --max-events=1 -- echo "${buffer}" 2>&1)"
>> -  if ! echo "$output" | grep -q -E "^echo/[0-9]+ write\([0-9]+, ${buffer}.*, [0-9]+\) += +[0-9]+$"
>> +  if ! echo "$output" | grep -qE "^echo/[0-9]+ write\([0-9]+, ${buffer}\\\\10, [0-9]+(, ..)?\) += +[0-9]+$"
>>    then
>>      printf "Buffer augmentation test failed, output:\n$output\n"
>>      err=1
>> -- 
>> 2.51.1
>>


-- 
Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany
--
IBM Deutschland Research & Development GmbH

Vorsitzender des Aufsichtsrats: Wolfgang Wendt

Geschäftsführung: David Faller

Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ