)]}'
{
  "commit": "7816fecd03e480ed0b47d674ed772ca0b45e1b5e",
  "tree": "33ed6c1780f3ebccd5915f724e7345875bee93b1",
  "parents": [
    "327933f5d6cdf083284d3c06e0370d1de464aef4"
  ],
  "author": {
    "name": "Matt Fleming",
    "email": "matt@console-pimps.org",
    "time": "Sat Jul 11 00:29:04 2009 +0000"
  },
  "committer": {
    "name": "Paul Mundt",
    "email": "lethal@linux-sh.org",
    "time": "Sat Jul 11 10:08:06 2009 +0900"
  },
  "message": "sh: Mark __switch_to() as __notrace_funcgraph\n\nAnnotate __switch_to() so that the function graph tracer does not try to\ntrace it. Use __notrace_funcgraph, as opposed to notrace, so that other\ntracers can continue to trace __switch_to().\n\nThe reason that we don\u0027t want to trace __switch_to() with the function\ngraph tracer is because of how the return address stack in task_struct\nis implemented. When we enter __switch_to we store the real return\naddress on prev\u0027s ret_stack. When we return from __switch_to() we\u0027ve\npatched the return address on the kernel stack to be\nreturn_to_handler. Calling return_to_handler we do,\n\n       -\u003e ftrace_return_to_handler()\n       \t  -\u003e ftrace_pop_return_ftrace()\n\nWhich tries to pop the real return address from current-\u003eret_stack. The\nproblem being that we stored the return address on prev-\u003eret_stack, but\ncurrent now points to next, and next-\u003eret_stack doesn\u0027t contain the\ncorrect return address (and is possibly even empty).\n\nSigned-off-by: Matt Fleming \u003cmatt@console-pimps.org\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "92d7740faab19d92b412e387e448052e431162aa",
      "old_mode": 33188,
      "old_path": "arch/sh/kernel/process_32.c",
      "new_id": "9fee977f176b7c95fe64c878b9ed84f25ee3777c",
      "new_mode": 33188,
      "new_path": "arch/sh/kernel/process_32.c"
    }
  ]
}
