)]}'
{
  "commit": "77efecd9e0526327548152df715ab8644ecb5ba0",
  "tree": "4dd2a82fe5db454fb018e434e07c3e6f30dc9832",
  "parents": [
    "104cbd55377029e70fc2cee01089e84b9c36e5dc"
  ],
  "author": {
    "name": "Lai Jiangshan",
    "email": "laijs@cn.fujitsu.com",
    "time": "Wed Jan 07 18:07:39 2009 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Jan 08 08:31:02 2009 -0800"
  },
  "message": "cgroups: call find_css_set() safely in cgroup_attach_task()\n\nIn cgroup_attach_task(), tsk maybe exit when we call find_css_set().  and\nfind_css_set() will access to invalid css_set.\n\nThis patch increases the count before get_css_set(), and decreases it\nafter find_css_set().\n\nNOTE:\n\ncss_set\u0027s refcount is also taskcount, after this patch applied, taskcount\nmay be off-by-one WHEN cgroup_lock() is not held.  but I reviewed other\ncode which use taskcount, they are still correct.  No regression found by\nreviewing and simply testing.\n\nSo I do not use two counters in css_set.  (one counter for taskcount, the\nother for refcount.  like struct mm_struct) If this fix cause regression,\nwe will use two counters in css_set.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.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": "00d5136d38c23f1261e373a67981ebf6d0cc694e",
      "old_mode": 33188,
      "old_path": "kernel/cgroup.c",
      "new_id": "61e92c5867ea03d9e26bb4c3bfc35717de350234",
      "new_mode": 33188,
      "new_path": "kernel/cgroup.c"
    }
  ]
}
