)]}'
{
  "commit": "d2e3ee9b29f5de5b01e611b04e6fb29760589b01",
  "tree": "ad73b17c2c6b83050a948685a0a3af3f907de67f",
  "parents": [
    "713c0ecdb888e9ef6f085e828555455c5916b07f"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@redhat.com",
    "time": "Fri Jul 17 09:09:36 2009 +1000"
  },
  "committer": {
    "name": "James Morris",
    "email": "jmorris@namei.org",
    "time": "Fri Jul 17 09:09:36 2009 +1000"
  },
  "message": "kernel: fix is_single_threaded\n\n- Fix the comment, is_single_threaded(p) actually means that nobody shares\n  -\u003emm with p.\n\n  I think this helper should be renamed, and it should not have arguments.\n  With or without this patch it must not be used unless p \u003d\u003d current,\n  otherwise we can\u0027t safely use p-\u003esignal or p-\u003emm.\n\n- \"if (atomic_read(\u0026p-\u003esignal-\u003ecount) !\u003d 1)\" is not right when we have a\n  zombie group leader, use signal-\u003elive instead.\n\n- Add PF_KTHREAD check to skip kernel threads which may borrow p-\u003emm,\n  otherwise we can return the wrong \"false\".\n\n- Use for_each_process() instead of do_each_thread(), all threads must use\n  the same -\u003emm.\n\n- Use down_write(mm-\u003emmap_sem) + rcu_read_lock() instead of tasklist_lock\n  to iterate over the process list. If there is another CLONE_VM process\n  it can\u0027t pass exit_mm() which takes the same mm-\u003emmap_sem. We can miss\n  a freshly forked CLONE_VM task, but this doesn\u0027t matter because we must\n  see its parent and return false.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f1ed2fe76c6575b9fc7ad28fdc215f87e6a73b3e",
      "old_mode": 33188,
      "old_path": "lib/is_single_threaded.c",
      "new_id": "2762516e0a5ee57ab1feceea4c096e85a59e0c47",
      "new_mode": 33188,
      "new_path": "lib/is_single_threaded.c"
    }
  ]
}
