)]}'
{
  "commit": "f09ac9db2aafe36fde9ebd63c8c5d776f6e7bd41",
  "tree": "ae2123e2bd6c054d82d5d2a3b81fdfb30c53e46e",
  "parents": [
    "f3d357b092956959563398b59ef2fdd10aea387d"
  ],
  "author": {
    "name": "Eric Paris",
    "email": "eparis@redhat.com",
    "time": "Fri Apr 18 10:11:04 2008 -0400"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Mon Apr 28 06:19:13 2008 -0400"
  },
  "message": "Audit: stop deadlock from signals under load\n\nA deadlock is possible between kauditd and auditd under load if auditd\nreceives a signal.  When auditd receives a signal it sends a netlink\nmessage to the kernel asking for information about the sender of the\nsignal.  In that same context the audit system will attempt to send a\nnetlink message back to the userspace auditd.  If kauditd has already\nfilled the socket buffer (see netlink_attachskb()) auditd will now put\nitself to sleep waiting for room to send the message.  Since auditd is\nresponsible for draining that socket we have a deadlock.  The fix, since\nthe response from the kernel does not need to be synchronous is to send\nthe signal information back to auditd in a separate thread.  And thus\nauditd can continue to drain the audit queue normally.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fee9052eb5cfe75b2823c08a71897ef9a05603bc",
      "old_mode": 33188,
      "old_path": "kernel/audit.c",
      "new_id": "520583d8ca1825b5a6a7f8a3db8239f65e3b034b",
      "new_mode": 33188,
      "new_path": "kernel/audit.c"
    }
  ]
}
