)]}'
{
  "commit": "10ab825bdef8df510f99c703a5a2d9b13a4e31a5",
  "tree": "e4db81f26c03ba5a5bff43ed44646a4ed4509d67",
  "parents": [
    "5de18d169739293e27e0cf9acfc75a2d2f4aa572"
  ],
  "author": {
    "name": "Oleg Nesterov",
    "email": "oleg@tv-sign.ru",
    "time": "Wed May 09 02:34:37 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Wed May 09 12:30:53 2007 -0700"
  },
  "message": "change kernel threads to ignore signals instead of blocking them\n\nCurrently kernel threads use sigprocmask(SIG_BLOCK) to protect against\nsignals.  This doesn\u0027t prevent the signal delivery, this only blocks\nsignal_wake_up().  Every \"killall -33 kthreadd\" means a \"struct siginfo\"\nleak.\n\nChange kthreadd_setup() to set all handlers to SIG_IGN instead of blocking\nthem (make a new helper ignore_signals() for that).  If the kernel thread\nneeds some signal, it should use allow_signal() anyway, and in that case it\nshould not use CLONE_SIGHAND.\n\nNote that we can\u0027t change daemonize() (should die!) in the same way,\nbecause it can be used along with CLONE_SIGHAND.  This means that\nallow_signal() still should unblock the signal to work correctly with\ndaemonize()ed threads.\n\nHowever, disallow_signal() doesn\u0027t block the signal any longer but ignores\nit.\n\nNOTE: with or without this patch the kernel threads are not protected from\nhandle_stop_signal(), this seems harmless, but not good.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "3d95c480f58df881a142cd4221b9d4ec0c382b94",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "28000b1658f9520d56ea4fddf7e152b83220bb50",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "bc982cd7274375b760cc346af0b6a74e93f0a67f",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "b0c6f0c3a2dfadd5e36647f2b0e5e5699174330d",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "0eb0070a3c57cd76a3b5ac9c0857dd4b04a6f351",
      "old_mode": 33188,
      "old_path": "kernel/kthread.c",
      "new_id": "df8a8e8f6ca4fbb55d2da6770f9040d31de9cf0b",
      "new_mode": 33188,
      "new_path": "kernel/kthread.c"
    },
    {
      "type": "modify",
      "old_id": "23ae6d62fc4134aac7e13061ad9d0b3058275ed8",
      "old_mode": 33188,
      "old_path": "kernel/signal.c",
      "new_id": "2ac3a668d9dd6adf8fb943ab8a0894f6b486e3fb",
      "new_mode": 33188,
      "new_path": "kernel/signal.c"
    }
  ]
}
