)]}'
{
  "commit": "823d219f23b958292279cfdc8583dc4f1f91c2d5",
  "tree": "509a25fdb647ff5021b8ecad40d26898c59bee85",
  "parents": [
    "e8ed741fcd521a25f1d983ec81f72ac823d8429a"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Sun Aug 01 19:23:35 2010 +0200"
  },
  "committer": {
    "name": "James Bottomley",
    "email": "James.Bottomley@suse.de",
    "time": "Fri Aug 06 12:06:08 2010 -0500"
  },
  "message": "[SCSI] pm8001: introduce missing kfree\n\nError handling code following a kmalloc should free the allocated data.\n\nThe semantic match that finds the problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nexpression E;\nidentifier f,f1;\nposition p1,p2;\n@@\n\nx@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...);\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\n     when !\u003d (x) \u003d\u003d NULL\n     when !\u003d (x) !\u003d NULL\n     when !\u003d (x) \u003d\u003d 0\n     when !\u003d (x) !\u003d 0\n(\nx-\u003ef1 \u003d E\n|\n (x-\u003ef1 \u003d\u003d NULL || ...)\n|\n f(...,x-\u003ef1,...)\n)\n...\u003e\n(\n return \u003c+...x...+\u003e;\n|\n return@p2 ...;\n)\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\nprint \"* file: %s kmalloc %s return %s\" % (p1[0].file,p1[0].line,p2[0].line)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nAcked-by: jack wang \u003cjack_wang@usish.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "58d1134935ef6860ec0087d549b4b399886db2de",
      "old_mode": 33188,
      "old_path": "drivers/scsi/pm8001/pm8001_hwi.c",
      "new_id": "9793aa6afb1061cfc035e3b1b826a375a78a7296",
      "new_mode": 33188,
      "new_path": "drivers/scsi/pm8001/pm8001_hwi.c"
    }
  ]
}
