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  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]
Date:   Mon,  8 Jul 2019 12:42:01 -0300
From:   Arnaldo Carvalho de Melo <>
To:     Ingo Molnar <>,
        Thomas Gleixner <>
Cc:     Jiri Olsa <>, Namhyung Kim <>,
        Clark Williams <>,,,
        Song Liu <>,
        David Carrillo Cisneros <>,
        Arnaldo Carvalho de Melo <>,,
Subject: [PATCH 2/8] perf header: Assign proper ff->ph in perf_event__synthesize_features()

From: Song Liu <>

bpf/btf write_* functions need ff->ph->env.

With this missing, pipe-mode (perf record -o -)  would crash like:

Program terminated with signal SIGSEGV, Segmentation fault.

This patch assign proper ph value to ff.

Committer testing:

  (gdb) run record -o -
  Starting program: /root/bin/perf record -o -
  <SNIP start of headers>
  Thread 1 "perf" received signal SIGSEGV, Segmentation fault.
  __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
  126		memcpy(ff->buf + ff->offset, buf, size);
  (gdb) bt
  #0  __do_write_buf (size=4, buf=0x160, ff=0x7fffffff8f80) at util/header.c:126
  #1  do_write (ff=ff@...ry=0x7fffffff8f80, buf=buf@...ry=0x160, size=4) at util/header.c:137
  #2  0x00000000004eddba in write_bpf_prog_info (ff=0x7fffffff8f80, evlist=<optimized out>) at util/header.c:912
  #3  0x00000000004f69d7 in perf_event__synthesize_features (tool=tool@...ry=0x97cc00 <record>, session=session@...ry=0x7fffe9c6d010,
      evlist=0x7fffe9cae010, process=process@...ry=0x4435d0 <process_synthesized_event>) at util/header.c:3695
  #4  0x0000000000443c79 in record__synthesize (tail=tail@...ry=false, rec=0x97cc00 <record>) at builtin-record.c:1214
  #5  0x0000000000444ec9 in __cmd_record (rec=0x97cc00 <record>, argv=<optimized out>, argc=0) at builtin-record.c:1435
  #6  cmd_record (argc=0, argv=<optimized out>) at builtin-record.c:2450
  #7  0x00000000004ae3e9 in run_builtin (p=p@...ry=0x98e058 <commands+216>, argc=argc@...ry=3, argv=0x7fffffffd670) at perf.c:304
  #8  0x000000000042eded in handle_internal_command (argv=<optimized out>, argc=<optimized out>) at perf.c:356
  #9  run_argv (argcp=<optimized out>, argv=<optimized out>) at perf.c:400
  #10 main (argc=3, argv=<optimized out>) at perf.c:522

After the patch the SEGSEGV is gone.

Reported-by: David Carrillo Cisneros <>
Signed-off-by: Song Liu <>
Tested-by: Arnaldo Carvalho de Melo <>
Cc: Jiri Olsa <>
Cc: Namhyung Kim <>
Cc: # v5.1+
Fixes: 606f972b1361 ("perf bpf: Save bpf_prog_info information as headers to")
Signed-off-by: Arnaldo Carvalho de Melo <>
 tools/perf/util/header.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 847ae51a524b..fb0aa661644b 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -3602,6 +3602,7 @@ int perf_event__synthesize_features(struct perf_tool *tool,
 		return -ENOMEM;
 	ff.size = sz - sz_hdr;
+ = &session->header;
 	for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) {
 		if (!feat_ops[feat].synthesize) {

Powered by blists - more mailing lists