)]}'
{
  "commit": "841f1d92fb8ca6aa70b56003d1da8874c593e820",
  "tree": "c161f16d86525f4256253045c01307c329d3e4da",
  "parents": [
    "016c2177918301c9a2557c675c12ab88667a27bb"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Fri Dec 23 18:39:27 2011 +0100"
  },
  "committer": {
    "name": "John W. Linville",
    "email": "linville@tuxdriver.com",
    "time": "Wed Jan 04 14:30:46 2012 -0500"
  },
  "message": "net/rfkill/rfkill-gpio.c: introduce missing kfree\n\nError handling code following a kmalloc should free the allocated data.\nThe label fail_alloc already does this for rfkill.\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: John W. Linville \u003clinville@tuxdriver.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ca355e7e58b4fd0d7fdb4918e08e8fedae767afd",
      "old_mode": 33188,
      "old_path": "net/rfkill/rfkill-gpio.c",
      "new_id": "865adb61685ac6478f99cc0627c3013574013887",
      "new_mode": 33188,
      "new_path": "net/rfkill/rfkill-gpio.c"
    }
  ]
}
