)]}'
{
  "commit": "c4a3987fa075b2d15ebc3d59b01fb7ed403cd3e1",
  "tree": "b751350fb5c0abc2c8f636dae7429d409300be7f",
  "parents": [
    "9e8307ecaf9f8c8b5b3b22145021204c4e73114a"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Mon Mar 29 22:33:28 2010 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Mar 29 22:33:28 2010 -0700"
  },
  "message": "drivers/serial/sunsu.c: Correct use after free\n\nThe of_iounmap is at the out_unmap label, but at that point up has already\nbeen freed.  The free cannot be moved to the out_unmap label, because that\nlabel is reachable from cases where up should not be freed.  So the call to\nof_iounmap is just duplicated, and the goto converted to a return.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression x,e;\nidentifier f;\niterator I;\nstatement S;\n@@\n\n*kfree(x);\n... when !\u003d \u0026x\n    when !\u003d x \u003d e\n    when !\u003d I(x,...) S\n*x-\u003ef\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "170d3d68c8f04d38fb67f8d3b84c9c977f57f7a1",
      "old_mode": 33188,
      "old_path": "drivers/serial/sunsu.c",
      "new_id": "cbcfb1885f79332935398a0712171794e1c6d9bf",
      "new_mode": 33188,
      "new_path": "drivers/serial/sunsu.c"
    }
  ]
}
