)]}'
{
  "commit": "5632c827cbd3617613530ba0e99344192d0a31ca",
  "tree": "374c8744a0280685434e6ecf1282df8834916d7e",
  "parents": [
    "30a0dee7806d099c709603e65aa08be0363ea49d"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Fri Dec 23 18:39:28 2011 +0100"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Wed Jan 04 15:52:42 2012 -0800"
  },
  "message": "drivers/usb/dwc3/dwc3-pci.c: introduce missing kfree\n\nGlue needs to be freed on exiting the function in an error case.\nFurthermore, pci, which is the first argument to the probe function should\nnot be freed before leaveing the function, as it is reused at the call\nsite.  So the free of pci is changed to free glue instead.\n\nA simplified version of the semantic match that finds the problem is as\nfollows: (http://coccinelle.lip6.fr)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nstatement S;\nidentifier f1;\nposition p1,p2;\nexpression *ptr !\u003d NULL;\n@@\n\nx@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...);\n...\nif (x \u003d\u003d NULL) S\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\nx-\u003ef1\n...\u003e\n(\n return \\(0\\|\u003c+...x...+\u003e\\|ptr\\);\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\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cd1429f168c223c6baa944e1992de78a5a0c94e1",
      "old_mode": 33188,
      "old_path": "drivers/usb/dwc3/dwc3-pci.c",
      "new_id": "64e1f7c67b08ed374f36428868ad29fd42557bd9",
      "new_mode": 33188,
      "new_path": "drivers/usb/dwc3/dwc3-pci.c"
    }
  ]
}
