)]}'
{
  "commit": "01462405f0c093b2f8dfddafcadcda6c9e4c5cdf",
  "tree": "b405f0cb9c2f653335ef88507f8ba6d16600c87a",
  "parents": [
    "d3052bb5d306b29c1e7d9e5998c5ac4ca1ff0ca9"
  ],
  "author": {
    "name": "Jiri Bohac",
    "email": "jbohac@suse.cz",
    "time": "Wed Nov 19 23:05:49 2014 +0100"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Thu Nov 20 22:57:03 2014 -0500"
  },
  "message": "ipx: fix locking regression in ipx_sendmsg and ipx_recvmsg\n\nThis fixes an old regression introduced by commit\nb0d0d915 (ipx: remove the BKL).\n\nWhen a recvmsg syscall blocks waiting for new data, no data can be sent on the\nsame socket with sendmsg because ipx_recvmsg() sleeps with the socket locked.\n\nThis breaks mars-nwe (NetWare emulator):\n- the ncpserv process reads the request using recvmsg\n- ncpserv forks and spawns nwconn\n- ncpserv calls a (blocking) recvmsg and waits for new requests\n- nwconn deadlocks in sendmsg on the same socket\n\nCommit b0d0d915 has simply replaced BKL locking with\nlock_sock/release_sock. Unlike now, BKL got unlocked while\nsleeping, so a blocking recvmsg did not block a concurrent\nsendmsg.\n\nOnly keep the socket locked while actually working with the socket data and\nrelease it prior to calling skb_recv_datagram().\n\nSigned-off-by: Jiri Bohac \u003cjbohac@suse.cz\u003e\nReviewed-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91729b807c7d041ae379e89df335acefe5218635",
      "old_mode": 33188,
      "old_path": "net/ipx/af_ipx.c",
      "new_id": "1b095ca37aa46bd86a534a5d7eff4824d65b2ef2",
      "new_mode": 33188,
      "new_path": "net/ipx/af_ipx.c"
    }
  ]
}
