)]}'
{
  "commit": "b191fa96ea6dc00d331dcc28c1f7db5e075693a0",
  "tree": "2d4eaf3bd9fde019704de4a90b6bca19195a3de5",
  "parents": [
    "fabe38ab6b2bd9418350284c63825f13b8a6abba"
  ],
  "author": {
    "name": "Masami Hiramatsu",
    "email": "mhiramat@kernel.org",
    "time": "Sun Feb 24 01:50:49 2019 +0900"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Fri Apr 19 14:26:07 2019 +0200"
  },
  "message": "x86/kprobes: Avoid kretprobe recursion bug\n\nAvoid kretprobe recursion loop bg by setting a dummy\nkprobes to current_kprobe per-CPU variable.\n\nThis bug has been introduced with the asm-coded trampoline\ncode, since previously it used another kprobe for hooking\nthe function return placeholder (which only has a nop) and\ntrampoline handler was called from that kprobe.\n\nThis revives the old lost kprobe again.\n\nWith this fix, we don\u0027t see deadlock anymore.\n\nAnd you can see that all inner-called kretprobe are skipped.\n\n  event_1                                  235               0\n  event_2                                19375           19612\n\nThe 1st column is recorded count and the 2nd is missed count.\nAbove shows (event_1 rec) + (event_2 rec) ~\u003d (event_2 missed)\n(some difference are here because the counter is racy)\n\nReported-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nTested-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@kernel.org\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: stable@vger.kernel.org\nFixes: c9becf58d935 (\"[PATCH] kretprobe: kretprobe-booster\")\nLink: http://lkml.kernel.org/r/155094064889.6137.972160690963039.stgit@devbox\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "18fbe9be2d683d2fb0d028aaf178e3f638fa4a0d",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/kprobes/core.c",
      "new_id": "fed46ddb1eef2d3de307f1cbb899f45c4b3e67c2",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/kprobes/core.c"
    }
  ]
}
