)]}'
{
  "commit": "880a3a5325489a143269a8e172e7563ebf9897bc",
  "tree": "8beb5344209c3ae8ec1f00ebe0da66bc31e64f49",
  "parents": [
    "f3aefb6a7066e24bfea7fcf1b07907576de69d63"
  ],
  "author": {
    "name": "J. Bruce Fields",
    "email": "bfields@redhat.com",
    "time": "Wed Mar 21 17:19:02 2018 -0400"
  },
  "committer": {
    "name": "J. Bruce Fields",
    "email": "bfields@redhat.com",
    "time": "Tue Apr 03 16:27:08 2018 -0400"
  },
  "message": "nfsd: fix incorrect umasks\n\nWe\u0027re neglecting to clear the umask after it\u0027s set, which can cause a\nlater unrelated rpc to (incorrectly) use the same umask if it happens to\nbe processed by the same thread.\n\nThere\u0027s a more subtle problem here too:\n\nAn NFSv4 compound request is decoded all in one pass before any\noperations are executed.\n\nCurrently we\u0027re setting current-\u003efs-\u003eumask at the time we decode the\ncompound.  In theory a single compound could contain multiple creates\neach setting a umask.  In that case we\u0027d end up using whichever umask\nwas passed in the *last* operation as the umask for all the creates,\nwhether that was correct or not.\n\nSo, we should just be saving the umask at decode time and waiting to set\nit until we actually process the corresponding operation.\n\nIn practice it\u0027s unlikely any client would do multiple creates in a\nsingle compound.  And even if it did they\u0027d likely be from the same\nprocess (hence carry the same umask).  So this is a little academic, but\nwe should get it right anyway.\n\nFixes: 47057abde515 (nfsd: add support for the umask attribute)\nCc: stable@vger.kernel.org\nReported-by: Lucash Stach \u003cl.stach@pengutronix.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c6157ece46b195cd3e7512378feade2ade55cc0b",
      "old_mode": 33188,
      "old_path": "fs/nfsd/nfs4proc.c",
      "new_id": "5d99e8810b85a59bd05df3016a4c52baf48b83dc",
      "new_mode": 33188,
      "new_path": "fs/nfsd/nfs4proc.c"
    },
    {
      "type": "modify",
      "old_id": "dd72cdf3662e59caa623b4466aace61fa8cb84f9",
      "old_mode": 33188,
      "old_path": "fs/nfsd/nfs4xdr.c",
      "new_id": "1d048dd95464683477401cb8db88771b0dc8fb71",
      "new_mode": 33188,
      "new_path": "fs/nfsd/nfs4xdr.c"
    },
    {
      "type": "modify",
      "old_id": "468020fe2a07ebf79e544532bcb1d0ea4f935c4d",
      "old_mode": 33188,
      "old_path": "fs/nfsd/xdr4.h",
      "new_id": "17c453a7999c42d5b55a4a7ce05312c655e1c161",
      "new_mode": 33188,
      "new_path": "fs/nfsd/xdr4.h"
    }
  ]
}
