)]}'
{
  "commit": "d0aaff9796c3310326d10da44fc0faed352a1d29",
  "tree": "591fd8dedf34464989d23bbb0e66a1ccb2fa18a6",
  "parents": [
    "505db03639db34ca2c64fe7ee27190d324281f2c"
  ],
  "author": {
    "name": "Prasanna S Panchamukhi",
    "email": "prasanna@in.ibm.com",
    "time": "Tue Sep 06 15:19:26 2005 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Wed Sep 07 16:57:59 2005 -0700"
  },
  "message": "[PATCH] Kprobes: prevent possible race conditions generic\n\nThere are possible race conditions if probes are placed on routines within the\nkprobes files and routines used by the kprobes.  For example if you put probe\non get_kprobe() routines, the system can hang while inserting probes on any\nroutine such as do_fork().  Because while inserting probes on do_fork(),\nregister_kprobes() routine grabs the kprobes spin lock and executes\nget_kprobe() routine and to handle probe of get_kprobe(), kprobes_handler()\ngets executed and tries to grab kprobes spin lock, and spins forever.  This\npatch avoids such possible race conditions by preventing probes on routines\nwithin the kprobes file and routines used by kprobes.\n\nI have modified the patches as per Andi Kleen\u0027s suggestion to move kprobes\nroutines and other routines used by kprobes to a seperate section\n.kprobes.text.\n\nAlso moved page fault and exception handlers, general protection fault to\n.kprobes.text section.\n\nThese patches have been tested on i386, x86_64 and ppc64 architectures, also\ncompiled on ia64 and sparc64 architectures.\n\nSigned-off-by: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "450eae22c39a3e2a517dea059a7e3b01bb7ce6d6",
      "old_mode": 33188,
      "old_path": "include/asm-generic/sections.h",
      "new_id": "886dbd11689991396238d2cc6bdf9f09374762ff",
      "new_mode": 33188,
      "new_path": "include/asm-generic/sections.h"
    },
    {
      "type": "modify",
      "old_id": "3fa94288aa9329473e7eda8d7f8d5893dd5c99ba",
      "old_mode": 33188,
      "old_path": "include/asm-generic/vmlinux.lds.h",
      "new_id": "6f857be2b6447ac3f64f134ce45844ef2555b11b",
      "new_mode": 33188,
      "new_path": "include/asm-generic/vmlinux.lds.h"
    },
    {
      "type": "modify",
      "old_id": "e050fc2d4c26146fac9d289de9b2cfda5663e400",
      "old_mode": 33188,
      "old_path": "include/linux/kprobes.h",
      "new_id": "e30afdca79174f9a01b0b538dca138f62bf697f2",
      "new_mode": 33188,
      "new_path": "include/linux/kprobes.h"
    },
    {
      "type": "modify",
      "old_id": "338f7795d8a071d63b05969505b6fe9894eafc46",
      "old_mode": 33188,
      "old_path": "include/linux/linkage.h",
      "new_id": "147eb01e0d4bbe536da8bef077fac4ed8d9cdd37",
      "new_mode": 33188,
      "new_path": "include/linux/linkage.h"
    },
    {
      "type": "modify",
      "old_id": "b0237122b24e14667631716a8a6c3e23a495a7e9",
      "old_mode": 33188,
      "old_path": "kernel/kprobes.c",
      "new_id": "3b7653f2e7aec10ce0ef94b038c551607cb9d440",
      "new_mode": 33188,
      "new_path": "kernel/kprobes.c"
    }
  ]
}
