)]}'
{
  "commit": "cc09c0dc57de7f7d2ed89d480b5653e5f6a32f2c",
  "tree": "3c6145ccb00f603c47e020cfa45f159ab76cf9bf",
  "parents": [
    "6307091fe69ae74747298bdcaf43119ad67bda3a"
  ],
  "author": {
    "name": "Dave Chinner",
    "email": "david@fromorbit.com",
    "time": "Mon Nov 17 17:37:10 2008 +1100"
  },
  "committer": {
    "name": "Lachlan McIlroy",
    "email": "lachlan@redback.melbourne.sgi.com",
    "time": "Mon Nov 17 17:37:10 2008 +1100"
  },
  "message": "[XFS] Fix double free of log tickets\n\nWhen an I/O error occurs during an intermediate commit on a rolling\ntransaction, xfs_trans_commit() will free the transaction structure\nand the related ticket. However, the duplicate transaction that\ngets used as the transaction continues still contains a pointer\nto the ticket. Hence when the duplicate transaction is cancelled\nand freed, we free the ticket a second time.\n\nAdd reference counting to the ticket so that we hold an extra\nreference to the ticket over the transaction commit. We drop the\nextra reference once we have checked that the transaction commit\ndid not return an error, thus avoiding a double free on commit\nerror.\n\nCredit to Nick Piggin for tripping over the problem.\n\nSGI-PV: 989741\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "db289050692f4fe4a95c791d427151b92c92fbdf",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_bmap.c",
      "new_id": "c3912213645c6a5e17637f2b9f57441de8c8d9c9",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_bmap.c"
    },
    {
      "type": "modify",
      "old_id": "cd522827f99e3c7f9fb6185bd3034170f659c13c",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_inode.c",
      "new_id": "b9771004706228d96a467e0708ec2f741c481b38",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_inode.c"
    },
    {
      "type": "modify",
      "old_id": "92c20a8d9e69c80388c64c58b3b64d69d9a6ae74",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_log.c",
      "new_id": "4bf44aef644c5d1cfdf84faa68e0d5e673de7707",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_log.c"
    },
    {
      "type": "modify",
      "old_id": "d47b91f10822b98400a6d11961a8a12d4e930d76",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_log.h",
      "new_id": "8a3e84e900a34e5153a453eae896bb795576a57b",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_log.h"
    },
    {
      "type": "modify",
      "old_id": "de7ef6ca9206d797ea7b9007b2e4a30e2178dffc",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_log_priv.h",
      "new_id": "b39a1980e82d1faa4eef0784afa7a0420e769947",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_log_priv.h"
    },
    {
      "type": "modify",
      "old_id": "ad137efc87020561f208cbbd3a382f98fcff24f7",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_trans.c",
      "new_id": "8570b826fedd85e2375831aebc754f18e3685ab1",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_trans.c"
    },
    {
      "type": "modify",
      "old_id": "35d4d414bcc273ca0981fad6ed4dddbbf8a9ea42",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_utils.c",
      "new_id": "771144932ab42ef08b21e68d1d7bc3c3db5d29df",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_utils.c"
    },
    {
      "type": "modify",
      "old_id": "c45ea278ef414b79c292e180ff8b6a8233435010",
      "old_mode": 33188,
      "old_path": "fs/xfs/xfs_vnodeops.c",
      "new_id": "0574aadc4d3cfe287d8a88e23e82b11814225831",
      "new_mode": 33188,
      "new_path": "fs/xfs/xfs_vnodeops.c"
    }
  ]
}
