)]}'
{
  "commit": "d12619b5ff5664623524aef796514d1946ea3b4a",
  "tree": "23140ca0148f9154440d3056e2040d8df468a24b",
  "parents": [
    "430c623121ea88ca80595c99fdc63b7f8a803ae5"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Fri Feb 08 04:19:12 2008 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Feb 08 09:22:27 2008 -0800"
  },
  "message": "fix group stop with exit race\n\ndo_signal_stop() counts all sub-thread and sets -\u003egroup_stop_count\naccordingly.  Every thread should decrement -\u003egroup_stop_count and stop,\nthe last one should notify the parent.\n\nHowever a sub-thread can exit before it notices the signal_pending(), or it\nmay be somewhere in do_exit() already.  In that case the group stop never\nfinishes properly.\n\nNote: this is a minimal fix, we can add some optimizations later.  Say we\ncan return quickly if thread_group_empty().  Also, we can move some signal\nrelated code from exit_notify() to exit_signals().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: 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": "7e095147656cfac8320faab052f5574e79cd6f13",
      "old_mode": 33188,
      "old_path": "include/linux/signal.h",
      "new_id": "42d2e0a948f4866533c7211c031362c8246b542a",
      "new_mode": 33188,
      "new_path": "include/linux/signal.h"
    },
    {
      "type": "modify",
      "old_id": "d7815f5708827c2ce6651cb31400de3cf22dfa95",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "8f3bf53a5b4d3cf4a09b9028eba496f38b69a141",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "3fca710a5cd7c0a7371c1c9e8519a63468732e76",
      "old_mode": 33188,
      "old_path": "kernel/signal.c",
      "new_id": "209eec11eef5dd0ca7662559e9988d7bcbe07056",
      "new_mode": 33188,
      "new_path": "kernel/signal.c"
    }
  ]
}
