)]}'
{
  "commit": "adbecb128cd2cc5d14b0ebef6d020ced0efd0ec6",
  "tree": "ba0f7c202e364002eedc999526ac07262f21dae4",
  "parents": [
    "afbec7fff4928c273a1f1bb14dfdfdf62688a193"
  ],
  "author": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Thu May 08 21:19:42 2008 -0400"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Fri May 16 17:22:46 2008 -0400"
  },
  "message": "[PATCH] dup_fd() part 4 - race fix\n\nParent _can_ be a clone task, contrary to the comment.  Moreover,\nmore files could be opened while we allocate a copy, in which case\nwe end up copying only part into new descriptor table.  Since what\nwe get _is_ affected by all changes in the old range, we can get\nrather weird effects - e.g.\n\tdup2(0, 1024); close(0);\nin parallel with fork() resulting in child that sees the effect of\nclose(), but not that of dup2() done just before that close().\n\nWhat we need is to recalculate the open_count after having reacquired\n-\u003efile_lock and if external fdtable we\u0027d just allocated is too small for\nit, free the sucker and redo allocation.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "689d2b6947e3e2da5dabf76d7e8512186b4eec40",
      "old_mode": 33188,
      "old_path": "fs/file.c",
      "new_id": "0f705c7cfefed4417ce507da9629282120931ae7",
      "new_mode": 33188,
      "new_path": "fs/file.c"
    }
  ]
}
