)]}'
{
  "commit": "134af34632a7b3b0a98a79a2e56bf9cc927e0eac",
  "tree": "b54012edae78a294723fba01d684cd41b8cd6e97",
  "parents": [
    "1c29fc4989bc2a3838b2837adc12b8aeb0feeede"
  ],
  "author": {
    "name": "Herbert Xu",
    "email": "herbert@gondor.apana.org.au",
    "time": "Fri May 05 17:09:13 2006 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri May 05 17:09:13 2006 -0700"
  },
  "message": "[DCCP]: Fix sock_orphan dead lock\n\nCalling sock_orphan inside bh_lock_sock in dccp_close can lead to dead\nlocks.  For example, the inet_diag code holds sk_callback_lock without\ndisabling BH.  If an inbound packet arrives during that admittedly tiny\nwindow, it will cause a dead lock on bh_lock_sock.  Another possible\npath would be through sock_wfree if the network device driver frees the\ntx skb in process context with BH enabled.\n\nWe can fix this by moving sock_orphan out of bh_lock_sock.\n\nThe tricky bit is to work out when we need to destroy the socket\nourselves and when it has already been destroyed by someone else.\n\nBy moving sock_orphan before the release_sock we can solve this\nproblem.  This is because as long as we own the socket lock its\nstate cannot change.\n\nSo we simply record the socket state before the release_sock\nand then check the state again after we regain the socket lock.\nIf the socket state has transitioned to DCCP_CLOSED in the time being,\nwe know that the socket has been destroyed.  Otherwise the socket is\nstill ours to keep.\n\nThis problem was discoverd by Ingo Molnar using his lock validator.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1ff7328b0e170bf137819ab03a76b3a4acdd9572",
      "old_mode": 33188,
      "old_path": "net/dccp/proto.c",
      "new_id": "2e0ee8355c415d24d13644e20ecb6d8e837d10c1",
      "new_mode": 33188,
      "new_path": "net/dccp/proto.c"
    }
  ]
}
