)]}'
{
  "commit": "a809dda0369ae6157f7bcd3e704b857d43704cbd",
  "tree": "075488e5c5d8d34e4b5405521095ba9b3947c20d",
  "parents": [
    "55dba52458a11126ff4445b5b94ebde03afcf47a"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Sat Aug 08 02:26:10 2009 +0200"
  },
  "committer": {
    "name": "Jiri Kosina",
    "email": "jkosina@suse.cz",
    "time": "Sat Aug 08 02:26:10 2009 +0200"
  },
  "message": "HID: fix memory leak on error patch in debug code\n\nError handling code following a kzalloc 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;\nstatement S;\nexpression E;\nidentifier f,f1,l;\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 }\n(\nx-\u003ef1 \u003d E\n|\n (x-\u003ef1 \u003d\u003d NULL || ...)\n|\n f(...,x-\u003ef1,...)\n)\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\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a331a1821e858a3ee1bc0fda9caba0354e4f5adf",
      "old_mode": 33188,
      "old_path": "drivers/hid/hid-debug.c",
      "new_id": "06e87dc7779600510ce3b08722b778a5ae6c16d4",
      "new_mode": 33188,
      "new_path": "drivers/hid/hid-debug.c"
    }
  ]
}
