)]}'
{
  "commit": "4b105cbbaf7c06e01c27391957dc3c446328d087",
  "tree": "4b6a65061a7bf46baea9d8867fdda0c22c8a3d45",
  "parents": [
    "f2f0b00ad61d53adfecb8bdf8f3cf8f05f6ed548"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@redhat.com",
    "time": "Wed Jun 17 16:27:33 2009 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Jun 18 13:03:51 2009 -0700"
  },
  "message": "ptrace: do not use task_lock() for attach\n\nRemove the \"Nasty, nasty\" lock dance in ptrace_attach()/ptrace_traceme() -\nfrom now task_lock() has nothing to do with ptrace at all.\n\nWith the recent changes nobody uses task_lock() to serialize with ptrace,\nbut in fact it was never needed and it was never used consistently.\n\nHowever ptrace_attach() calls __ptrace_may_access() and needs task_lock()\nto pin task-\u003emm for get_dumpable().  But we can call __ptrace_may_access()\nbefore we take tasklist_lock, -\u003ecred_exec_mutex protects us against\ndo_execve() path which can change creds and MMF_DUMP* flags.\n\n(ugly, but we can\u0027t use ptrace_may_access() because it hides the error\ncode, so we have to take task_lock() and use __ptrace_may_access()).\n\nNOTE: this change assumes that LSM hooks, security_ptrace_may_access() and\nsecurity_ptrace_traceme(), can be called without task_lock() held.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "12e21a949db14645a886fa4ef69963f9e451ca9d",
      "old_mode": 33188,
      "old_path": "kernel/ptrace.c",
      "new_id": "38fdfea1a15a0f9b18cb6bf09be17f0fda493bfd",
      "new_mode": 33188,
      "new_path": "kernel/ptrace.c"
    }
  ]
}
