)]}'
{
  "commit": "a271bfaf30ce8f7f57c6b65c47bff6d306d0b758",
  "tree": "08d0fe37874f9e750db9e522b38b6eefee954822",
  "parents": [
    "b6af53b7d6fa40262c16753fe2781a3e792d5e1b"
  ],
  "author": {
    "name": "Jiri Olsa",
    "email": "jolsa@redhat.com",
    "time": "Thu Nov 09 10:02:10 2017 +0100"
  },
  "committer": {
    "name": "Arnaldo Carvalho de Melo",
    "email": "acme@redhat.com",
    "time": "Thu Nov 09 10:10:58 2017 -0300"
  },
  "message": "perf tools: Fix eBPF event specification parsing\n\nLooks like I\u0027ve reached the new level of stupidity, adding missing braces.\n\nCommitter testing:\n\nGiven the following eBPF C filter, that will add a record when it\nreturns true, i.e. when the tv_nsec variable is \u003e 2000ns, should be\nbuilt and installed via sys_bpf(), but fails to do so before this patch:\n\n  # cat filter.c\n  #include \u003cuapi/linux/bpf.h\u003e\n  #define SEC(NAME) __attribute__((section(NAME), used))\n\n  SEC(\"func\u003dhrtimer_nanosleep rqtp-\u003etv_nsec\")\n  int func(void *ctx, int err, long nsec)\n  {\n\t  return nsec \u003e 1000;\n  }\n  char _license[] SEC(\"license\") \u003d \"GPL\";\n  int _version SEC(\"version\") \u003d LINUX_VERSION_CODE;\n  #\n\n  # perf trace -e nanosleep,filter.c usleep 1\n  invalid or unsupported event: \u0027filter.c\u0027\n  Run \u0027perf list\u0027 for a list of valid events\n\n   Usage: perf trace [\u003coptions\u003e] [\u003ccommand\u003e]\n      or: perf trace [\u003coptions\u003e] -- \u003ccommand\u003e [\u003coptions\u003e]\n      or: perf trace record [\u003coptions\u003e] [\u003ccommand\u003e]\n      or: perf trace record [\u003coptions\u003e] -- \u003ccommand\u003e [\u003coptions\u003e]\n\n      -e, --event \u003cevent\u003e   event/syscall selector. use \u0027perf list\u0027 to list available events\n  #\n\nAnd works again after it is applied, the nothing is inserted when the co\n\n  # perf trace -e *sleep,filter.c usleep 1\n     0.000 ( 0.066 ms): usleep/23994 nanosleep(rqtp: 0x7ffead94a0d0) \u003d 0\n  # perf trace -e *sleep,filter.c usleep 2\n     0.000 ( 0.008 ms): usleep/24378 nanosleep(rqtp: 0x7fffa021ba50) ...\n     0.008 (         ): perf_bpf_probe:func:(ffffffffb410cb30) tv_nsec\u003d2000)\n     0.000 ( 0.066 ms): usleep/24378  ... [continued]: nanosleep()) \u003d 0\n  #\n\nThe intent of 9445464bb831 is kept:\n\n  # perf stat -e \u0027cpu/uops_executed.core,krava/\u0027  true\n  event syntax error: \u0027..cuted.core,krava/\u0027\n                                    \\___ unknown term\n\n  valid terms: cmask,pc,event,edge,in_tx,any,ldlat,inv,umask,in_tx_cp,offcore_rsp,config,config1,config2,name,period\n  Run \u0027perf list\u0027 for a list of valid events\n\n   Usage: perf stat [\u003coptions\u003e] [\u003ccommand\u003e]\n\n      -e, --event \u003cevent\u003e   event selector. use \u0027perf list\u0027 to list available events\n  #\n  # perf stat -e \u0027cpu/uops_executed.core,period\u003d1/\u0027  true\n\n   Performance counter stats for \u0027true\u0027:\n\n           808,332      cpu/uops_executed.core,period\u003d1/\n\n       0.002997237 seconds time elapsed\n\n  #\n\nReported-by: Arnaldo Carvalho de Melo \u003cacme@kernel.org\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@kernel.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nFixes: 9445464bb831 (\"perf tools: Unwind properly location after REJECT\")\nLink: http://lkml.kernel.org/n/tip-diea0ihbwpxfw6938huv3whj@git.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dc5f40e86e518f9811aba0729d9a2f56ad1d69b9",
      "old_mode": 33188,
      "old_path": "tools/perf/util/parse-events.l",
      "new_id": "025729510525d9917e4a2d1a624f3913adcbe67c",
      "new_mode": 33188,
      "new_path": "tools/perf/util/parse-events.l"
    }
  ]
}
