)]}'
{
  "commit": "69e4747ee9727d660b88d7e1efe0f4afcb35db1b",
  "tree": "2dde4642ad0dba19688b664c4397c61cf9ebce25",
  "parents": [
    "a3301b751b19f0efbafddc4034f8e7ce6bf3007b"
  ],
  "author": {
    "name": "Gleb Natapov",
    "email": "gleb@redhat.com",
    "time": "Sun Jan 08 17:07:28 2012 +0200"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri Jan 13 20:39:44 2012 -0800"
  },
  "message": "Unused iocbs in a batch should not be accounted as active.\n\nSince commit 080d676de095 (\"aio: allocate kiocbs in batches\") iocbs are\nallocated in a batch during processing of first iocbs.  All iocbs in a\nbatch are automatically added to ctx-\u003eactive_reqs list and accounted in\nctx-\u003ereqs_active.\n\nIf one (not the last one) of iocbs submitted by an user fails, further\niocbs are not processed, but they are still present in ctx-\u003eactive_reqs\nand accounted in ctx-\u003ereqs_active.  This causes process to stuck in a D\nstate in wait_for_all_aios() on exit since ctx-\u003ereqs_active will never\ngo down to zero.  Furthermore since kiocb_batch_free() frees iocb\nwithout removing it from active_reqs list the list become corrupted\nwhich may cause oops.\n\nFix this by removing iocb from ctx-\u003eactive_reqs and updating\nctx-\u003ereqs_active in kiocb_batch_free().\n\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: stable@kernel.org   # 3.2\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "78c514cfd212d66b8e6311d4a25435be6493c26d",
      "old_mode": 33188,
      "old_path": "fs/aio.c",
      "new_id": "969beb0e22311a4f7e7f4155524709d5dd8269bf",
      "new_mode": 33188,
      "new_path": "fs/aio.c"
    }
  ]
}
