)]}'
{
  "commit": "732f3ca7d4ba3c1be8d051d52302ef441ee7748b",
  "tree": "503f2c44e3a1617cb4aa45454071cb52330574b9",
  "parents": [
    "0a37605c2261a06d8cafc62dee11374ad676c8c4"
  ],
  "author": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Thu Aug 14 18:05:05 2008 -0400"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Tue Oct 14 10:35:01 2008 +0200"
  },
  "message": "ftrace: use only 5 byte nops for x86\n\nMathieu Desnoyers revealed a bug in the original code. The nop that is\nused to relpace the mcount caller can be a two part nop. This runs the\nrisk where a process can be preempted after executing the first nop, but\nbefore the second part of the nop.\n\nThe ftrace code calls kstop_machine to keep multiple CPUs from executing\ncode that is being modified, but it does not protect against a task preempting\nin the middle of a two part nop.\n\nIf the above preemption happens and the tracer is enabled, after the\nkstop_machine runs, all those nops will be calls to the trace function.\nIf the preempted process that was preempted between the two nops is executed\nagain, it will execute half of the call to the trace function, and this\nmight crash the system.\n\nThis patch instead uses what both the latest Intel and AMD spec suggests.\nThat is the P6_NOP5 sequence of \"0x0f 0x1f 0x44 0x00 0x00\".\n\nNote, some older CPUs and QEMU might fault on this nop, so this nop\nis executed with fault handling first. If it detects a fault, it will then\nuse the code \"0x66 0x66 0x66 0x66 0x90\". If that faults, it will then\ndefault to a simple \"jmp 1f; .byte 0x00 0x00 0x00; 1:\". The jmp is\nnot optimal but will do if the first two can not be executed.\n\nTODO: Examine the cpuid to determine the nop to use.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "96aadbfedcc614f915b05a74caf7bd3b4b0ab7cd",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/ftrace.c",
      "new_id": "4151c91254e834a23c83f2da769412cd855b0a1b",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/ftrace.c"
    }
  ]
}
