)]}'
{
  "commit": "efe1cf0c5743caf4daccb57b399ef63edad41c9d",
  "tree": "d482979aa5a16a49d8095dcf00b6023c9051b86f",
  "parents": [
    "76a9f6fd9adc5ce62b4ea36a099bb1458d4cb7a6"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Fri Jan 28 15:17:11 2011 +0100"
  },
  "committer": {
    "name": "John W. Linville",
    "email": "linville@tuxdriver.com",
    "time": "Fri Jan 28 15:46:23 2011 -0500"
  },
  "message": "net/wireless/nl80211.c: Avoid call to genlmsg_cancel\n\ngenlmsg_cancel subtracts some constants from its second argument before\ncalling nlmsg_cancel.  nlmsg_cancel then calls nlmsg_trim on the same\narguments.  nlmsg_trim tests for NULL before doing any computation, but a\nNULL second argument to genlmsg_cancel is no longer NULL due to the initial\nsubtraction.  Nothing else happens in this execution, so the call to\ngenlmsg_cancel is simply unnecessary in this case.\n\nThe semantic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression data;\n@@\n\nif (data \u003d\u003d NULL) { ...\n* genlmsg_cancel(..., data);\n  ...\n  return ...;\n}\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": "9b62710891a2b3ebd188e013975537c33bd172e9",
      "old_mode": 33188,
      "old_path": "net/wireless/nl80211.c",
      "new_id": "864ddfbeff2f5940e487f18e746abc70f938ac0d",
      "new_mode": 33188,
      "new_path": "net/wireless/nl80211.c"
    }
  ]
}
