)]}'
{
  "commit": "36f97bc617e2c31d16b74e89cd2406de4d24ede5",
  "tree": "75df74dfe36f1dc1521bbccbc1f2b7e6b29c76e9",
  "parents": [
    "71053fb1c645e86feb48051d6a4c58b8f2b26806"
  ],
  "author": {
    "name": "Julia Lawall",
    "email": "julia@diku.dk",
    "time": "Sun Jan 06 17:50:34 2008 +0100"
  },
  "committer": {
    "name": "David Woodhouse",
    "email": "dwmw2@infradead.org",
    "time": "Tue Jan 08 07:48:58 2008 +0000"
  },
  "message": "[JFFS2] Add missing call to posix_acl_release\n\nposix_acl_clone does a memory allocation and sets a reference count, so\nposix_acl_release is needed afterwards to free it.\n\nThe problem was fixed using the following semantic patch.\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nidentifier E;\nexpression E1, E2;\nint ret;\nstatement S;\n@@\n\n  T E;\n  \u003c+...\n(\n  E \u003d \\(posix_acl_clone\\|posix_acl_alloc\\|posix_acl_dup\\)(...);\n  if (E \u003d\u003d NULL) S\n|\n  if ((E \u003d \\(posix_acl_clone\\|posix_acl_alloc\\|posix_acl_dup\\)(...)) \u003d\u003d NULL) S\n)\n  ... when !\u003d E2 \u003d E\n      when strict\n(\n  posix_acl_release(E);\n|\n  E1 \u003d E;\n|\n+ posix_acl_release(E);\n  return;\n|\n+ posix_acl_release(E);\n  return ret;\n)\n  ...+\u003e\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nAcked-by: KaiGai Kohei \u003ckaigai@ak.jp.nec.com\u003e\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "993ddfce031836d67abe98b611e4392eda549b90",
      "old_mode": 33188,
      "old_path": "fs/jffs2/acl.c",
      "new_id": "4c80404a9abae4b61e075135bb62441450596b11",
      "new_mode": 33188,
      "new_path": "fs/jffs2/acl.c"
    }
  ]
}
