)]}'
{
  "log": [
    {
      "commit": "24562486be76cf223b8d911f45e1d26eb3364b13",
      "tree": "7ce33c533c12b4dc66d8afd836c7996d5769e325",
      "parents": [
        "f24b38874e1e37bb70291bbc4c5c3c13f5f9dac8"
      ],
      "author": {
        "name": "Frank Swiderski",
        "email": "fes@chromium.org",
        "time": "Mon Nov 15 10:43:22 2010 -0800"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 13:01:25 2011 -0600"
      },
      "message": "ecryptfs: remove unnecessary decrypt when extending a file\n\nRemoves an unecessary page decrypt from ecryptfs_begin_write when the\npage is beyond the current file size. Previously, the call to\necryptfs_decrypt_page would result in a read of 0 bytes, but still\nattempt to decrypt an entire page. This patch detects that case and\nmerely zeros the page before marking it up-to-date.\n\nSigned-off-by: Frank Swiderski \u003cfes@chromium.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f24b38874e1e37bb70291bbc4c5c3c13f5f9dac8",
      "tree": "f1e41cafb5205403961e98728ade5adfaf5b33a7",
      "parents": [
        "888d57bbc91ebd031451d4ab1c669baee826a06c"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Nov 15 17:36:38 2010 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 13:01:24 2011 -0600"
      },
      "message": "ecryptfs: Fix ecryptfs_printk() size_t warnings\n\nCommit cb55d21f6fa19d8c6c2680d90317ce88c1f57269 revealed a number of\nmissing \u0027z\u0027 length modifiers in calls to ecryptfs_printk() when\nprinting variables of type size_t. This patch fixes those compiler\nwarnings.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "888d57bbc91ebd031451d4ab1c669baee826a06c",
      "tree": "a446e3d6f7134a50d5118702fadba04ab5ee3c14",
      "parents": [
        "0abe1169470571c473ee720c35fe5b3481c46c46"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Nov 10 15:46:16 2010 -0800"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 13:01:23 2011 -0600"
      },
      "message": "fs/ecryptfs: Add printf format/argument verification and fix fallout\n\nAdd __attribute__((format... to __ecryptfs_printk\nMake formats and arguments match.\nAdd casts to (unsigned long long) for %llu.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\n[tyhicks: 80 columns cleanup and fixed typo]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0abe1169470571c473ee720c35fe5b3481c46c46",
      "tree": "3261e72681db07a04a56f31af0edb536b9b7a5e2",
      "parents": [
        "27992890b02d340198a3a22fc210d13684a41564"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Nov 03 11:11:34 2010 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 11:24:43 2011 -0600"
      },
      "message": "ecryptfs: fixed testing of file descriptor flags\n\nThis patch replaces the check (lower_file-\u003ef_flags \u0026 O_RDONLY) with\n((lower_file \u0026 O_ACCMODE) \u003d\u003d O_RDONLY).\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "27992890b02d340198a3a22fc210d13684a41564",
      "tree": "7ece682994e705791c2c96a02cb139c1f42b0239",
      "parents": [
        "070baa51286e5cf59dde6be52fa23647ffb5d32d"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Nov 03 11:11:28 2010 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 11:24:42 2011 -0600"
      },
      "message": "ecryptfs: test lower_file pointer when lower_file_mutex is locked\n\nThis patch prevents the lower_file pointer in the \u0027ecryptfs_inode_info\u0027\nstructure to be checked when the mutex \u0027lower_file_mutex\u0027 is not locked.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "070baa51286e5cf59dde6be52fa23647ffb5d32d",
      "tree": "ea0b6bc104a0717f1ae37ddff7620f9cd31a50a6",
      "parents": [
        "2a8652f4e0d11ee27b1d2870c600fd1300661a6e"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Nov 03 11:11:22 2010 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 11:23:01 2011 -0600"
      },
      "message": "ecryptfs: missing initialization of the superblock \u0027magic\u0027 field\n\nThis patch initializes the \u0027magic\u0027 field of ecryptfs filesystems to\nECRYPTFS_SUPER_MAGIC.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\n[tyhicks: merge with 66cb76666d69]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2a8652f4e0d11ee27b1d2870c600fd1300661a6e",
      "tree": "f7ee0d8614b60a8733bcf0cfba8ac94776925ed5",
      "parents": [
        "38a708d7759476318d0eec64af174513032ec67a"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Nov 03 11:11:15 2010 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 10:44:31 2011 -0600"
      },
      "message": "ecryptfs: moved ECRYPTFS_SUPER_MAGIC definition to linux/magic.h\n\nThe definition of ECRYPTFS_SUPER_MAGIC has been moved to the include\nfile \u0027linux/magic.h\u0027 to become available to other kernel subsystems.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "38a708d7759476318d0eec64af174513032ec67a",
      "tree": "e3cd94359191e72c26ea6a0ecc37c1933b9dcc71",
      "parents": [
        "e78bf5e6cbe837daa6ab628a5f679548742994d3"
      ],
      "author": {
        "name": "Edward Shishkin",
        "email": "edward.shishkin@gmail.com",
        "time": "Sat Oct 30 00:11:50 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Jan 17 10:44:30 2011 -0600"
      },
      "message": "ecryptfs: fix truncation error in ecryptfs_read_update_atime\n\nThis is similar to the bug found in direct-io not so long ago.\n\nFix up truncation (ssize_t-\u003eint).  This only matters with \u003e2G\nreads/writes, which the kernel doesn\u0027t permit.\n\nSigned-off-by: Edward Shishkin \u003cedward.shishkin@gmail.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Eric Sandeen \u003cesandeen@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6254b32b5791e47ba1c679d023f26985fa34755a",
      "tree": "121faecbf6c17732ee620fd68009e3e24205340e",
      "parents": [
        "2a86cb7c2b1e9eb98b36d0a3cf4444d8851968b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:19:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:19:38 2011 -0800"
      },
      "message": "ecryptfs: fix broken build\n\nStephen Rothwell reports that the vfs merge broke the build of ecryptfs.\nThe breakage comes from commit 66cb76666d69 (\"sanitize ecryptfs\n-\u003emount()\") which was obviously not even build tested. Tssk, tssk, Al.\n\nThis is the minimal build fixup for the situation, although I don\u0027t have\na filesystem to actually test it with.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66cb76666d69502fe982990b2cff5b6d607fd3b1",
      "tree": "eac005b64fc6e78105d77ad4e9950cb647bccdb6",
      "parents": [
        "d61dcce2977d9abe855a5fe3570a81242209c23b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:04:37 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:04:37 2011 -0500"
      },
      "message": "sanitize ecryptfs -\u003emount()\n\nkill ecryptfs_read_super(), reorder code allowing to use\nnormal d_alloc_root() instead of opencoding it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b1e6a015a580ad145689ad1d6b4aa0e03e6c868b",
      "tree": "57a10ef164e4d2f798d9b832dbeaf973aca2ab83",
      "parents": [
        "621e155a3591962420eacdd39f6f0aa29ceb221e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:28 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: change d_hash for rcu-walk\n\nChange d_hash so it may be called from lock-free RCU lookups. See similar\npatch for d_compare for details.\n\nFor in-tree filesystems, this is just a mechanical change.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12462f2df4d10ea4f6d55b9d438ff788badec3f0",
      "tree": "7ef2335c9df9b9cb45aa64c9dfcf8819bdcdf06f",
      "parents": [
        "d2df40857fd57f02906e6ac1484d10cb7accbc86",
        "8747f954817212b4623f9067d4909cbde04b4d89"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 29 14:15:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 29 14:15:12 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:\n  eCryptfs: Print mount_auth_tok_only param in ecryptfs_show_options\n  ecryptfs: added ecryptfs_mount_auth_tok_only mount parameter\n  ecryptfs: checking return code of ecryptfs_find_auth_tok_for_sig()\n  ecryptfs: release keys loaded in ecryptfs_keyring_auth_tok_for_sig()\n  eCryptfs: Clear LOOKUP_OPEN flag when creating lower file\n  ecryptfs: call vfs_setxattr() in ecryptfs_setxattr()\n"
    },
    {
      "commit": "8747f954817212b4623f9067d4909cbde04b4d89",
      "tree": "d303bd72ad84fa11764813c018c1f38532aea0ae",
      "parents": [
        "f16feb5119a87f5e683be7e8916c060abfb0e8d6"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 15 16:43:41 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:36 2010 -0500"
      },
      "message": "eCryptfs: Print mount_auth_tok_only param in ecryptfs_show_options\n\nWhen printing mount options, print the new ecryptfs_mount_auth_tok_only\nmount option.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f16feb5119a87f5e683be7e8916c060abfb0e8d6",
      "tree": "ed80e0f8d2d8c5b63c8b48e11da4eca0163bb9f4",
      "parents": [
        "39fac853a758306285404368fbe392408057b136"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Oct 06 18:31:32 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:36 2010 -0500"
      },
      "message": "ecryptfs: added ecryptfs_mount_auth_tok_only mount parameter\n\nThis patch adds a new mount parameter \u0027ecryptfs_mount_auth_tok_only\u0027 to\nforce ecryptfs to use only authentication tokens which signature has\nbeen specified at mount time with parameters \u0027ecryptfs_sig\u0027 and\n\u0027ecryptfs_fnek_sig\u0027. In this way, after disabling the passthrough and\nthe encrypted view modes, it\u0027s possible to make available to users only\nfiles encrypted with the specified authentication token.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\n[Tyler: Clean up coding style errors found by checkpatch]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "39fac853a758306285404368fbe392408057b136",
      "tree": "920cc8e2ed51b568c6c63d15dfa98931f5926d04",
      "parents": [
        "aee683b9e77e17237b0e146025c3d363c9203634"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Oct 06 18:31:15 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:36 2010 -0500"
      },
      "message": "ecryptfs: checking return code of ecryptfs_find_auth_tok_for_sig()\n\nThis patch replaces the check of the \u0027matching_auth_tok\u0027 pointer with\nthe exit status of ecryptfs_find_auth_tok_for_sig().\nThis avoids to use authentication tokens obtained through the function\necryptfs_keyring_auth_tok_for_sig which are not valid.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "aee683b9e77e17237b0e146025c3d363c9203634",
      "tree": "79ec9b8a2ff2d2e433bbe7a6959a34aeb75c25b6",
      "parents": [
        "2e21b3f124eceb6ab5a07c8a061adce14ac94e14"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Wed Oct 06 18:31:06 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:35 2010 -0500"
      },
      "message": "ecryptfs: release keys loaded in ecryptfs_keyring_auth_tok_for_sig()\n\nThis patch allows keys requested in the function\necryptfs_keyring_auth_tok_for_sig()to be released when they are no\nlonger required. In particular keys are directly released in the same\nfunction if the obtained authentication token is not valid.\n\nFurther, a new function parameter \u0027auth_tok_key\u0027 has been added to\necryptfs_find_auth_tok_for_sig() in order to provide callers the key\npointer to be passed to key_put().\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\n[Tyler: Initialize auth_tok_key to NULL in ecryptfs_parse_packet_set]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2e21b3f124eceb6ab5a07c8a061adce14ac94e14",
      "tree": "0997d7430d83a976b5e7ff0e2201032a45ccb759",
      "parents": [
        "48b512e6857139393cdfce26348c362b87537018"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Sep 23 02:35:04 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:35 2010 -0500"
      },
      "message": "eCryptfs: Clear LOOKUP_OPEN flag when creating lower file\n\neCryptfs was passing the LOOKUP_OPEN flag through to the lower file\nsystem, even though ecryptfs_create() doesn\u0027t support the flag. A valid\nfilp for the lower filesystem could be returned in the nameidata if the\nlower file system\u0027s create() function supported LOOKUP_OPEN, possibly\nresulting in unencrypted writes to the lower file.\n\nHowever, this is only a potential problem in filesystems (FUSE, NFS,\nCIFS, CEPH, 9p) that eCryptfs isn\u0027t known to support today.\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/641703\n\nReported-by: Kevin Buhr\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "48b512e6857139393cdfce26348c362b87537018",
      "tree": "9ea39b5232052cbcd8d675058d3d7ab735b3a4f7",
      "parents": [
        "f6f94e2ab1b33f0082ac22d71f66385a60d8157f"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Tue Oct 05 18:53:45 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Oct 29 10:31:35 2010 -0500"
      },
      "message": "ecryptfs: call vfs_setxattr() in ecryptfs_setxattr()\n\nEcryptfs is a stackable filesystem which relies on lower filesystems the\nability of setting/getting extended attributes.\n\nIf there is a security module enabled on the system it updates the\n\u0027security\u0027 field of inodes according to the owned extended attribute set\nwith the function vfs_setxattr().  When this function is performed on a\necryptfs filesystem the \u0027security\u0027 field is not updated for the lower\nfilesystem since the call security_inode_post_setxattr() is missing for\nthe lower inode.\nFurther, the call security_inode_setxattr() is missing for the lower inode,\nleading to policy violations in the security module because specific\nchecks for this hook are not performed (i. e. filesystem\n\u0027associate\u0027 permission on SELinux is not checked for the lower filesystem).\n\nThis patch replaces the call of the setxattr() method of the lower inode\nin the function ecryptfs_setxattr() with vfs_setxattr().\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nCc: stable \u003cstable@kernel.org\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4d143beb0429e8c9c5f1dc66c7ff8ee70dde45a4",
      "tree": "59e9ac220d7753696f3292bd8af2ad004b81c13e",
      "parents": [
        "d0e46f88b2f73828faf00d559c7e5b3ce9e39a4b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 13:33:36 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:11 2010 -0400"
      },
      "message": "convert ecryptfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "229aebb873e29726b91e076161649cf45154b0bf",
      "tree": "acc02a3702215bce8d914f4c8cc3d7a1382b1c67",
      "parents": [
        "8de547e1824437f3c6af180d3ed2162fa4b3f389",
        "50a23e6eec6f20d55a3a920e47adb455bff6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  Update broken web addresses in arch directory.\n  Update broken web addresses in the kernel.\n  Revert \"drivers/usb: Remove unnecessary return\u0027s from void functions\" for musb gadget\n  Revert \"Fix typo: configuation \u003d\u003e configuration\" partially\n  ida: document IDA_BITMAP_LONGS calculation\n  ext2: fix a typo on comment in ext2/inode.c\n  drivers/scsi: Remove unnecessary casts of private_data\n  drivers/s390: Remove unnecessary casts of private_data\n  net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data\n  drivers/infiniband: Remove unnecessary casts of private_data\n  drivers/gpu/drm: Remove unnecessary casts of private_data\n  kernel/pm_qos_params.c: Remove unnecessary casts of private_data\n  fs/ecryptfs: Remove unnecessary casts of private_data\n  fs/seq_file.c: Remove unnecessary casts of private_data\n  arm: uengine.c: remove C99 comments\n  arm: scoop.c: remove C99 comments\n  Fix typo configue \u003d\u003e configure in comments\n  Fix typo: configuation \u003d\u003e configuration\n  Fix typo interrest[ing|ed] \u003d\u003e interest[ing|ed]\n  Fix various typos of valid in comments\n  ...\n\nFix up trivial conflicts in:\n\tdrivers/char/ipmi/ipmi_si_intf.c\n\tdrivers/usb/gadget/rndis.c\n\tnet/irda/irnet/irnet_ppp.c\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "18dfe89d7c394b56e20e06dde8b7a80ff96cf02c",
      "tree": "bcf8dee4faffd32cc5cfec2febe40f145d0c23aa",
      "parents": [
        "77f2fe036cd51300c80d1aca76bcf23a09977f13"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Sep 16 15:35:54 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:48 2010 +0200"
      },
      "message": "BKL: Remove BKL from ecryptfs\n\nThe BKL is only used in fill_super, which is protected by the superblocks\ns_umount rw_semaphorei, and in fasync, which does not do anything that\ncould require the BKL. Therefore it is safe to remove the BKL entirely.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\n"
    },
    {
      "commit": "db71922217a214e5c9268448e537b54fc1f301ea",
      "tree": "9c9afbf29411547891f6968e5ade29ce59d66c07",
      "parents": [
        "899611ee7d373e5eeda08e9a8632684e1ebbbf00"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@infradead.org",
        "time": "Sun Aug 15 22:51:10 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:10 2010 +0200"
      },
      "message": "BKL: Explicitly add BKL around get_sb/fill_super\n\nThis patch is a preparation necessary to remove the BKL from do_new_mount().\nIt explicitly adds calls to lock_kernel()/unlock_kernel() around\nget_sb/fill_super operations for filesystems that still uses the BKL.\n\nI\u0027ve read through all the code formerly covered by the BKL inside\ndo_kern_mount() and have satisfied myself that it doesn\u0027t need the BKL\nany more.\n\ndo_kern_mount() is already called without the BKL when mounting the rootfs\nand in nfsctl. do_kern_mount() calls vfs_kern_mount(), which is called\nfrom various places without BKL: simple_pin_fs(), nfs_do_clone_mount()\nthrough nfs_follow_mountpoint(), afs_mntpt_do_automount() through\nafs_mntpt_follow_link(). Both later functions are actually the filesystems\nfollow_link inode operation. vfs_kern_mount() is calling the specified\nget_sb function and lets the filesystem do its job by calling the given\nfill_super function.\n\nTherefore I think it is safe to push down the BKL from the VFS to the\nlow-level filesystems get_sb/fill_super operation.\n\n[arnd: do not add the BKL to those file systems that already\n       don\u0027t use it elsewhere]\n\nSigned-off-by: Jan Blunck \u003cjblunck@infradead.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "0c6d7d5da27df7ec586fc916f06136a6b7ad1f72",
      "tree": "256be645285a861d143ee77703a7f33e7ce30a75",
      "parents": [
        "8209e2f46752914e94f65469b8312c42dc5d7d8f"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat Sep 04 18:52:48 2010 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 23 13:29:38 2010 +0200"
      },
      "message": "fs/ecryptfs: Remove unnecessary casts of private_data\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "93c3fe40c279f002906ad14584c30671097d4394",
      "tree": "9e18819c7abfe2bc6b15e924236efd36a0601780",
      "parents": [
        "7371a38201d04124a9ff2cf05059731d7c1e35a5"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Aug 25 10:26:37 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Aug 27 10:50:53 2010 -0500"
      },
      "message": "eCryptfs: Fix encrypted file name lookup regression\n\nFixes a regression caused by 21edad32205e97dc7ccb81a85234c77e760364c8\n\nWhen file name encryption was enabled, ecryptfs_lookup() failed to use\nthe encrypted and encoded version of the upper, plaintext, file name\nwhen performing a lookup in the lower file system. This made it\nimpossible to lookup existing encrypted file names and any newly created\nfiles would have plaintext file names in the lower file system.\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/623087\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7371a38201d04124a9ff2cf05059731d7c1e35a5",
      "tree": "0a463fc73700c12c0e28299d2b214394e9bd7249",
      "parents": [
        "f137f15072411618e37b338aa13e5ae43583bcf2"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Tue Aug 17 17:24:05 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Aug 27 10:50:52 2010 -0500"
      },
      "message": "ecryptfs: properly mark init functions\n\nSome ecryptfs init functions are not prefixed by __init and thus not\nfreed after initialization. This patch saved about 1kB in ecryptfs\nmodule.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f137f15072411618e37b338aa13e5ae43583bcf2",
      "tree": "a1679017c58f65b7fd20febab16bb338354bd59b",
      "parents": [
        "76be97c1fc945db08aae1f1b746012662d643e97"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed Aug 11 12:11:41 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Aug 27 10:50:52 2010 -0500"
      },
      "message": "fs/ecryptfs: Return -ENOMEM on memory allocation failure\n\nIn this code, 0 is returned on memory allocation failure, even though other\nfailures return -ENOMEM or other similar values.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression ret;\nexpression x,e1,e2,e3;\n@@\n\nret \u003d 0\n... when !\u003d ret \u003d e1\n*x \u003d \\(kmalloc\\|kcalloc\\|kzalloc\\)(...)\n... when !\u003d ret \u003d e2\nif (x \u003d\u003d NULL) { ... when !\u003d ret \u003d e3\n  return ret;\n}\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "26b55633a891a28bf04f42882de145eb8e9cb9ad",
      "tree": "997c1bbaad576a0ae4903af59a8d89b86b0f2fae",
      "parents": [
        "b34d8915c413acb51d837a45fb8747b61f65c020",
        "21edad32205e97dc7ccb81a85234c77e760364c8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 12:14:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 12:14:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:\n  ecryptfs: dont call lookup_one_len to avoid NULL nameidata\n  fs/ecryptfs/file.c: introduce missing free\n  ecryptfs: release reference to lower mount if interpose fails\n  eCryptfs: Handle ioctl calls with unlocked and compat functions\n  ecryptfs: Fix warning in ecryptfs_process_response()\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "ebabe9a9001af0af56c0c2780ca1576246e7a74b",
      "tree": "b263299f575c650b6e9d95c7c4bdeef958af2fc9",
      "parents": [
        "336fb3b97b78edc65bae0b223b83bf676cfe29e2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jul 07 18:53:11 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:42 2010 -0400"
      },
      "message": "pass a struct path to vfs_statfs\n\nWe\u0027ll need the path to implement the flags field for statvfs support.\nWe do have it available in all callers except:\n\n - ecryptfs_statfs.  This one doesn\u0027t actually need vfs_statfs but just\n   needs to do a caller to the lower filesystem statfs method.\n - sys_ustat.  Add a non-exported statfs_by_dentry helper for it which\n   doesn\u0027t won\u0027t be able to fill out the flags field later on.\n\nIn addition rename the helpers for statfs vs fstatfs to do_*statfs instead\nof the misleading vfs prefix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b57922d97fd6f79b6dbe6db0c4fd30d219fa08c1",
      "tree": "1d39e9cd8e1c1f502fb7e985a08286859c69aa36",
      "parents": [
        "45321ac54316eaeeebde0b5f728a1791e500974c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 14:34:48 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:37 2010 -0400"
      },
      "message": "convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c27c65ed0696f0b5df2dad2cf6462d72164d547",
      "tree": "7d9036e3dea98938f7fd7074366ee73929e9b2e5",
      "parents": [
        "db78b877f7744bec4a9d9f9e7d10da3931d7cd39"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:04 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:39 2010 -0400"
      },
      "message": "check ATTR_SIZE contraints in inode_change_ok\n\nMake sure we check the truncate constraints early on in -\u003esetattr by adding\nthose checks to inode_change_ok.  Also clean up and document inode_change_ok\nto make this obvious.\n\nAs a fallout we don\u0027t have to call inode_newsize_ok from simple_setsize and\nsimplify it down to a truncate_setsize which doesn\u0027t return an error.  This\nsimplifies a lot of setattr implementations and means we use truncate_setsize\nalmost everywhere.  Get rid of fat_setsize now that it\u0027s trivial and mark\next2_setsize static to make the calling convention obvious.\n\nKeep the inode_newsize_ok in vmtruncate for now as all callers need an\naudit for its removal anyway.\n\nNote: setattr code in ecryptfs doesn\u0027t call inode_change_ok at all and\nneeds a deeper audit, but that is left for later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "21edad32205e97dc7ccb81a85234c77e760364c8",
      "tree": "d68f20aa288a6fe98547fe348d3c300020ad8daf",
      "parents": [
        "ceeab92971e8af05c1e81a4ff2c271124b55bb9b"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "linosanfilippo@gmx.de",
        "time": "Thu Jul 15 15:11:55 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Aug 09 13:42:12 2010 -0500"
      },
      "message": "ecryptfs: dont call lookup_one_len to avoid NULL nameidata\n\nI have encountered the same problem that Eric Sandeen described in\nthis post\n\n http://lkml.org/lkml/fancy/2010/4/23/467\n\nwhile experimenting with stackable filesystems.\n\nThe reason seems to be that ecryptfs calls lookup_one_len() to get the\nlower dentry, which in turn calls the lower parent dirs d_revalidate()\nwith a NULL nameidata object.\nIf ecryptfs is the underlaying filesystem, the NULL pointer dereference\noccurs, since ecryptfs is not prepared to handle a NULL nameidata.\n\nI know that this cant happen any more, since it is no longer allowed to\nmount ecryptfs upon itself.\n\nBut maybe this patch it useful nevertheless, since the problem would still\napply for an underlaying filesystem that implements d_revalidate() and is\nnot prepared to handle a NULL nameidata (I dont know if there actually\nis such a fs).\n\nWith this patch (against 2.6.35-rc5) ecryptfs uses the vfs_lookup_path()\nfunction instead of lookup_one_len() which ensures that the nameidata\npassed to the lower filesystems d_revalidate().\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ceeab92971e8af05c1e81a4ff2c271124b55bb9b",
      "tree": "517cc3160679d39da57cee982a1aff7cbf7fb789",
      "parents": [
        "31f73bee3e170b7cabb35db9e2f4bf7919b9d036"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Aug 06 22:58:49 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Aug 09 13:25:24 2010 -0500"
      },
      "message": "fs/ecryptfs/file.c: introduce missing free\n\nThe comments in the code indicate that file_info should be released if the\nfunction fails.  This releasing is done at the label out_free, not out.\n\nThe semantic match that finds this problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nstatement S;\nexpression E;\nidentifier f,f1,l;\nposition p1,p2;\nexpression *ptr !\u003d NULL;\n@@\n\nx@p1 \u003d kmem_cache_zalloc(...);\n...\nif (x \u003d\u003d NULL) S\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\n(\nx-\u003ef1 \u003d E\n|\n (x-\u003ef1 \u003d\u003d NULL || ...)\n|\n f(...,x-\u003ef1,...)\n)\n...\u003e\n(\n return \u003c+...x...+\u003e;\n|\n return@p2 ...;\n)\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\nprint \"* file: %s kmem_cache_zalloc %s\" % (p1[0].file,p1[0].line)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "31f73bee3e170b7cabb35db9e2f4bf7919b9d036",
      "tree": "70c0ebb11bb3839050df7fa26b42c94d05cf6a3c",
      "parents": [
        "c43f7b8fb03be8bcc579bfc4e6ab70eac887ab55"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Thu Jul 29 13:01:36 2010 +0200"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Aug 09 10:33:05 2010 -0500"
      },
      "message": "ecryptfs: release reference to lower mount if interpose fails\n\nIn ecryptfs_lookup_and_interpose_lower() the lower mount is not decremented\nif allocation of a dentry info struct failed. As a result the lower filesystem\ncant be unmounted any more (since it is considered busy). This patch corrects\nthe reference counting.\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c43f7b8fb03be8bcc579bfc4e6ab70eac887ab55",
      "tree": "ec4f169d9260b78ef93e39c554fc32532b399b18",
      "parents": [
        "a1275c3b21e433888994f7b979cd1129d384ec9c"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Nov 03 11:45:11 2009 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Aug 09 10:33:04 2010 -0500"
      },
      "message": "eCryptfs: Handle ioctl calls with unlocked and compat functions\n\nLower filesystems that only implemented unlocked_ioctl weren\u0027t being\npassed ioctl calls because eCryptfs only checked for\nlower_file-\u003ef_op-\u003eioctl and returned -ENOTTY if it was NULL.\n\neCryptfs shouldn\u0027t implement ioctl(), since it doesn\u0027t require the BKL.\nThis patch introduces ecryptfs_unlocked_ioctl() and\necryptfs_compat_ioctl(), which passes the calls on to the lower file\nsystem.\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/469664\n\nReported-by: James Dupin \u003cjames.dupin@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a1275c3b21e433888994f7b979cd1129d384ec9c",
      "tree": "f9be251a845fb8377af6ff38a8747d329b6298bd",
      "parents": [
        "9fe6206f400646a2322096b56c59891d530e8d51"
      ],
      "author": {
        "name": "Prarit Bhargava",
        "email": "prarit@redhat.com",
        "time": "Thu May 27 11:19:30 2010 -0400"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Aug 09 10:33:03 2010 -0500"
      },
      "message": "ecryptfs: Fix warning in ecryptfs_process_response()\n\nFix warning seen with \"make -j24 CONFIG_DEBUG_SECTION_MISMATCH\u003dy V\u003d1\":\n\nfs/ecryptfs/messaging.c: In function \u0027ecryptfs_process_response\u0027:\nfs/ecryptfs/messaging.c:276: warning: \u0027daemon\u0027 may be used uninitialized in this function\n\nSigned-off-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d790d4d583aeaed9fc6f8a9f4d9f8ce6b1c15c7f",
      "tree": "854ab394486288d40fa8179cbfaf66e8bdc44b0f",
      "parents": [
        "73b2c7165b76b20eb1290e7efebc33cfd21db1ca",
        "3a09b1be53d23df780a0cd0e4087a05e2ca4a00c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 04 15:14:38 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 04 15:14:38 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "a6f80fb7b5986fda663d94079d3bba0937a6b6ff",
      "tree": "b8a44b0ed1560ae3f00f1ff4e342f43b7422bcc3",
      "parents": [
        "6c50e1a49b4377b760ee46f824ed04b17be913e3"
      ],
      "author": {
        "name": "Andre Osterhues",
        "email": "aosterhues@escrypt.com",
        "time": "Tue Jul 13 15:59:17 2010 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 28 19:59:24 2010 -0700"
      },
      "message": "ecryptfs: Bugfix for error related to ecryptfs_hash_buckets\n\nThe function ecryptfs_uid_hash wrongly assumes that the\nsecond parameter to hash_long() is the number of hash\nbuckets instead of the number of hash bits.\nThis patch fixes that and renames the variable\necryptfs_hash_buckets to ecryptfs_hash_bits to make it\nclearer.\n\nFixes: CVE-2010-2492\n\nSigned-off-by: Andre Osterhues \u003caosterhues@escrypt.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f1bbbb6912662b9f6070c5bfc4ca9eb1f06a9d5b",
      "tree": "c2c130a74be25b0b2dff992e1a195e2728bdaadd",
      "parents": [
        "fd0961ff67727482bb20ca7e8ea97b83e9de2ddb",
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:08:13 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "421f91d21ad6f799dc7b489bb33cc560ccc56f98",
      "tree": "aaf9f6385233fdf9277e634603156c89ede7f770",
      "parents": [
        "65155b3708137fabee865dc4da822763c0c41208"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri Jun 11 12:17:00 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jun 16 18:05:05 2010 +0200"
      },
      "message": "fix typos concerning \"initiali[zs]e\"\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "15c6fd9786dfaab43547bf60df6fa63170fb64fc",
      "tree": "afd997b3402761e28b6c39f414fbd93c69fdcdce",
      "parents": [
        "7bb46a6734a7e1ad4beaecc11cae7ed3ff81d30f"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu May 27 01:05:34 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:15:42 2010 -0400"
      },
      "message": "kill spurious reference to vmtruncate\n\nLots of filesystems calls vmtruncate despite not implementing the old\n-\u003etruncate method.  Switch them to use simple_setsize and add some\ncomments about the truncate code where it seems fitting.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48c1e44aceca577aa35be509714bd9ec4b4c3837",
      "tree": "5fe7c1f352e21bf1d58763cb2f4158d94e080923",
      "parents": [
        "02bd97997a07a89cb9311c7f00864cfc785c37f9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 11:09:58 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:28 2010 -0400"
      },
      "message": "switch ecryptfs_write() to struct inode *, kill on-stack fake files\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02bd97997a07a89cb9311c7f00864cfc785c37f9",
      "tree": "c962381bd79b8611bc4d3b3e369f2ce8fe3c6174",
      "parents": [
        "bef5bc2464517cbbf8f85f09b5ade46904afec9a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 11:02:14 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:28 2010 -0400"
      },
      "message": "switch ecryptfs_get_locked_page() to struct inode *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bef5bc2464517cbbf8f85f09b5ade46904afec9a",
      "tree": "34a41e84884e431647af4535147e4fab91cbf88e",
      "parents": [
        "f6d335c08df48b318187a087c9c38ba3d416e115"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 10:56:12 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:28 2010 -0400"
      },
      "message": "simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n\nwe can get to them from page-\u003emapping-\u003ehost, no need to mess with\nfile.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4403158ba295c8e36f6736b1bb12d0f7e1923dac",
      "tree": "a85c276c7ba414ecc65a93488dcb2ef7972779c0",
      "parents": [
        "ab9a79b9669c28734a69fa9384df6fb93152e53a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon May 17 00:59:46 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:27 2010 -0400"
      },
      "message": "Ban ecryptfs over ecryptfs\n\nThis is a seriously simplified patch from Eric Sandeen; copy of\nrationale follows:\n\u003d\u003d\u003d\n  mounting stacked ecryptfs on ecryptfs has been shown to lead to bugs\n  in testing.  For crypto info in xattr, there is no mechanism for handling\n  this at all, and for normal file headers, we run into other trouble:\n\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000008\n  IP: [\u003cffffffffa015b0b3\u003e] ecryptfs_d_revalidate+0x43/0xa0 [ecryptfs]\n  ...\n\n  There doesn\u0027t seem to be any good usecase for this, so I\u0027d suggest just\n  disallowing the configuration.\n\n  Based on a patch originally, I believe, from Mike Halcrow.\n\u003d\u003d\u003d\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8018ab057480974e7f26a387bf4ce040e9a5f6f1",
      "tree": "98298180bf60797a028eca4f24234dc67d38a9d4",
      "parents": [
        "e970a573ce30a3976234dcfb67906c164b0df9ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Mar 22 17:32:25 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "sanitize vfs_fsync calling conventions\n\nNow that the last user passing a NULL file pointer is gone we can remove\nthe redundant dentry argument and associated hacks inside vfs_fsynmc_range.\n\nThe next step will be removig the dentry argument from -\u003efsync, but given\nthe luck with the last round of method prototype changes I\u0027d rather\ndefer this until after the main merge window.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2ccde7c631f992bf79da8007b5fc8b6425eb0d6d",
      "tree": "d99cbae607223c76916fd373d7a827515ed022c0",
      "parents": [
        "decabd6650915a9534dad09e967115513be12b24"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 21 12:24:29 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:13 2010 -0400"
      },
      "message": "Clean ecryptfs -\u003eget_sb() up\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "decabd6650915a9534dad09e967115513be12b24",
      "tree": "3e4aa8ed78535f3a34b60e363e7b13efbd7ea62c",
      "parents": [
        "894680710d813137077ad7cb351b713f64cabbdf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 20 22:32:26 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:13 2010 -0400"
      },
      "message": "fix a couple of ecryptfs leaks\n\nFirst of all, get_sb_nodev() grabs anon dev minor and we\nnever free it in ecryptfs -\u003ekill_sb().  Moreover, on one\nof the failure exits in ecryptfs_get_sb() we leak things -\nit happens before we set -\u003es_root and -\u003eput_super() won\u0027t\nbe called in that case.  Solution: kill -\u003eput_super(), do\nall that stuff in -\u003ekill_sb().  And use kill_anon_sb() instead\nof generic_shutdown_super() to deal with anon dev leak.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9df9c8b930156a2f9ce2b2ae66acb14bee2663f5",
      "tree": "35992d372a4587600f93c399eaa12b7c7bd77cbf",
      "parents": [
        "5163d90076729413cb882d3dd5c3d3cfb5b9f035"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 22 12:22:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 22 12:22:04 2010 +0200"
      },
      "message": "ecryptfs: add bdi backing to mount session\n\nThis ensures that dirty data gets flushed properly.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9b030e2006546366c832911ca5eb9e785408795b",
      "tree": "fe2b5913249c047fc8d7f851f7a6a0049825e2d3",
      "parents": [
        "76e506a754c9519ba0a948b475a62f31fac8b599",
        "9f37622f897a90ad3c3da5c14d94d8f3ffc62b70"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 19 14:20:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 19 14:20:32 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:\n  eCryptfs: Turn lower lookup error messages into debug messages\n  eCryptfs: Copy lower directory inode times and size on link\n  ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode\n  ecryptfs: fix error code for missing xattrs in lower fs\n  eCryptfs: Decrypt symlink target for stat size\n  eCryptfs: Strip metadata in xattr flag in encrypted view\n  eCryptfs: Clear buffer before reading in metadata xattr\n  eCryptfs: Rename ecryptfs_crypt_stat.num_header_bytes_at_front\n  eCryptfs: Fix metadata in xattr feature regression\n"
    },
    {
      "commit": "9f37622f897a90ad3c3da5c14d94d8f3ffc62b70",
      "tree": "dbed84aa76784f22b20c0fee847b43c15dd29f72",
      "parents": [
        "3a8380c0754a7972668a46f645930910e304095c"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Mar 25 11:16:56 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 19 14:42:18 2010 -0500"
      },
      "message": "eCryptfs: Turn lower lookup error messages into debug messages\n\nVaugue warnings about ENAMETOOLONG errors when looking up an encrypted\nfile name have caused many users to become concerned about their data.\nSince this is a rather harmless condition, I\u0027m moving this warning to\nonly be printed when the ecryptfs_verbosity module param is 1.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3a8380c0754a7972668a46f645930910e304095c",
      "tree": "85bc2f8551aa121f0a40f4b5bb24b7c58da35b16",
      "parents": [
        "133b8f9d632cc23715c6d72d1c5ac449e054a12a"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Mar 23 18:09:02 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 19 14:42:15 2010 -0500"
      },
      "message": "eCryptfs: Copy lower directory inode times and size on link\n\nThe timestamps and size of a lower inode involved in a link() call was\nbeing copied to the upper parent inode.  Instead, we should be\ncopying lower parent inode\u0027s timestamps and size to the upper parent\ninode.  I discovered this bug using the POSIX test suite at Tuxera.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "133b8f9d632cc23715c6d72d1c5ac449e054a12a",
      "tree": "4559634958e6da3f7a3e2b5ae1229b9e3924d5fa",
      "parents": [
        "cfce08c6bdfb20ade979284e55001ca1f100ed51"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@jeffreymahoney.com",
        "time": "Fri Mar 19 15:35:46 2010 -0400"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 19 14:42:13 2010 -0500"
      },
      "message": "ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode\n\nSince tmpfs has no persistent storage, it pins all its dentries in memory\nso they have d_count\u003d1 when other file systems would have d_count\u003d0.\n-\u003elookup is only used to create new dentries. If the caller doesn\u0027t\ninstantiate it, it\u0027s freed immediately at dput(). -\u003ereaddir reads\ndirectly from the dcache and depends on the dentries being hashed.\n\nWhen an ecryptfs mount is mounted, it associates the lower file and dentry\nwith the ecryptfs files as they\u0027re accessed. When it\u0027s umounted and\ndestroys all the in-memory ecryptfs inodes, it fput\u0027s the lower_files and\nd_drop\u0027s the lower_dentries. Commit 4981e081 added this and a d_delete in\n2008 and several months later commit caeeeecf removed the d_delete. I\nbelieve the d_drop() needs to be removed as well.\n\nThe d_drop effectively hides any file that has been accessed via ecryptfs\nfrom the underlying tmpfs since it depends on it being hashed for it to\nbe accessible. I\u0027ve removed the d_drop on my development node and see no\nill effects with basic testing on both tmpfs and persistent storage.\n\nAs a side effect, after ecryptfs d_drops the dentries on tmpfs, tmpfs\nBUGs on umount. This is due to the dentries being unhashed.\ntmpfs-\u003ekill_sb is kill_litter_super which calls d_genocide to drop\nthe reference pinning the dentry. It skips unhashed and negative dentries,\nbut shrink_dcache_for_umount_subtree doesn\u0027t. Since those dentries\nstill have an elevated d_count, we get a BUG().\n\nThis patch removes the d_drop call and fixes both issues.\n\nThis issue was reported at:\nhttps://bugzilla.novell.com/show_bug.cgi?id\u003d567887\n\nReported-by:  Árpád Bíró \u003cbiroa@demasz.hu\u003e\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cfce08c6bdfb20ade979284e55001ca1f100ed51",
      "tree": "598510daaec037baf1088533cd366b5f37c05a1c",
      "parents": [
        "3a60a1686f0d51c99bd0df8ac93050fb6dfce647"
      ],
      "author": {
        "name": "Christian Pulvermacher",
        "email": "pulvermacher@gmx.de",
        "time": "Tue Mar 23 11:51:38 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 19 14:42:09 2010 -0500"
      },
      "message": "ecryptfs: fix error code for missing xattrs in lower fs\n\nIf the lower file system driver has extended attributes disabled,\necryptfs\u0027 own access functions return -ENOSYS instead of -EOPNOTSUPP.\nThis breaks execution of programs in the ecryptfs mount, since the\nkernel expects the latter error when checking for security\ncapabilities in xattrs.\n\nSigned-off-by: Christian Pulvermacher \u003cpulvermacher@gmx.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3a60a1686f0d51c99bd0df8ac93050fb6dfce647",
      "tree": "8b1a32c122e86022f6397a9f5e82900783717aab",
      "parents": [
        "f4e60e6b303bc46cdc477d3174dbf9cb5dd013aa"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 22 00:41:35 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 19 14:41:51 2010 -0500"
      },
      "message": "eCryptfs: Decrypt symlink target for stat size\n\nCreate a getattr handler for eCryptfs symlinks that is capable of\nreading the lower target and decrypting its path.  Prior to this patch,\na stat\u0027s st_size field would represent the strlen of the encrypted path,\nwhile readlink() would return the strlen of the decrypted path.  This\ncould lead to confusion in some userspace applications, since the two\nvalues should be equal.\n\nhttps://bugs.launchpad.net/bugs/524919\n\nReported-by: Loïc Minier \u003cloic.minier@canonical.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "f4e60e6b303bc46cdc477d3174dbf9cb5dd013aa",
      "tree": "36abefd614efd86f97ac812f57c86a583c7e484a",
      "parents": [
        "1984c23f9e0cdb432d90a85ecf88b424d36878fc"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Feb 11 00:02:32 2010 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Mar 23 12:31:35 2010 -0500"
      },
      "message": "eCryptfs: Strip metadata in xattr flag in encrypted view\n\nThe ecryptfs_encrypted_view mount option provides a unified way of\nviewing encrypted eCryptfs files.  If the metadata is stored in a xattr,\nthe metadata is moved to the file header when the file is read inside\nthe eCryptfs mount.  Because of this, we should strip the\nECRYPTFS_METADATA_IN_XATTR flag from the header\u0027s flag section.  This\nallows eCryptfs to treat the file as an eCryptfs file with a header\nat the front.\n\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1984c23f9e0cdb432d90a85ecf88b424d36878fc",
      "tree": "1a4dc765c6d7f93c29c9c878d7b0a972bf49d2ac",
      "parents": [
        "fa3ef1cb4e6e9958a9bfaa977c107c515907f102"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Feb 10 23:17:44 2010 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Mar 23 12:31:09 2010 -0500"
      },
      "message": "eCryptfs: Clear buffer before reading in metadata xattr\n\nWe initially read in the first PAGE_CACHE_SIZE of a file to if the\neCryptfs header marker can be found.  If it isn\u0027t found and\necryptfs_xattr_metadata was given as a mount option, then the\nuser.ecryptfs xattr is read into the same buffer.  Since the data from\nthe first page of the file wasn\u0027t cleared, it is possible that we think\nwe\u0027ve found a second tag 3 or tag 1 packet and then error out after the\npacket contents aren\u0027t as expected.  This patch clears the buffer before\nfilling it with metadata from the user.ecryptfs xattr.\n\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fa3ef1cb4e6e9958a9bfaa977c107c515907f102",
      "tree": "f297192533a0c8720534c76c6429e68ae92b94d9",
      "parents": [
        "157f1071354db1aed885816094888e0e257c9d0a"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Feb 11 05:09:14 2010 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Mar 23 12:30:41 2010 -0500"
      },
      "message": "eCryptfs: Rename ecryptfs_crypt_stat.num_header_bytes_at_front\n\nThis patch renames the num_header_bytes_at_front variable to\nmetadata_size since it now contains the max size of the metadata.\n\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "157f1071354db1aed885816094888e0e257c9d0a",
      "tree": "711d00d7dce97f846342db0a27b4a61c6b1966a4",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Feb 11 07:10:38 2010 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Mar 23 12:29:49 2010 -0500"
      },
      "message": "eCryptfs: Fix metadata in xattr feature regression\n\nFixes regression in 8faece5f906725c10e7a1f6caf84452abadbdc7b\n\nWhen using the ecryptfs_xattr_metadata mount option, eCryptfs stores the\nmetadata (normally stored at the front of the file) in the user.ecryptfs\nxattr.  This causes ecryptfs_crypt_stat.num_header_bytes_at_front to be\n0, since there is no header data at the front of the file.  This results\nin too much memory being requested and ENOMEM being returned from\necryptfs_write_metadata().\n\nThis patch fixes the problem by using the num_header_bytes_at_front\nvariable for specifying the max size of the metadata, despite whether it\nis stored in the header or xattr.\n\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ece550f51ba175c14ec3ec047815927d7386ea1f",
      "tree": "759c930b24718b3feacf149a8e4759f7725ee8e5",
      "parents": [
        "4aa25bcb7dac2d583f1557e2be2d0b598581da54"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Tue Jan 19 12:34:32 2010 +0300"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:36:06 2010 -0600"
      },
      "message": "ecryptfs: use after free\n\nThe \"full_alg_name\" variable is used on a couple error paths, so we\nshouldn\u0027t free it until the end.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4aa25bcb7dac2d583f1557e2be2d0b598581da54",
      "tree": "6627afceaed30b0897298e83ceb4ecd580eeb9f0",
      "parents": [
        "fe0fc013cd8bbd2f4737c1b2694b37dd7fe459cb"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat Jan 16 17:00:26 2010 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:36:05 2010 -0600"
      },
      "message": "ecryptfs: Eliminate useless code\n\nThe variable lower_dentry is initialized twice to the same (side effect-free)\nexpression.  Drop one initialization.\n\nA simplified version of the semantic match that finds this problem is:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@forall@\nidexpression *x;\nidentifier f!\u003dERR_PTR;\n@@\n\nx \u003d f(...)\n... when !\u003d x\n(\nx \u003d f(...,\u003c+...x...+\u003e,...)\n|\n* x \u003d f(...)\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fe0fc013cd8bbd2f4737c1b2694b37dd7fe459cb",
      "tree": "e14e4769d95b419be630547ad3d902bc63f71678",
      "parents": [
        "3469b57329f80db5a41cf42d1c8f7690269f57e7"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Mon Jan 04 18:17:02 2010 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:36:03 2010 -0600"
      },
      "message": "ecryptfs: fix interpose/interpolate typos in comments\n\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nAcked-by: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3469b57329f80db5a41cf42d1c8f7690269f57e7",
      "tree": "1672f23b8742dd5426cd3448ab2592342e99e091",
      "parents": [
        "c44a66d674688f1e1d0b2f6f56bd9c6a1b061cae"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Sun Dec 06 18:51:15 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:36:02 2010 -0600"
      },
      "message": "ecryptfs: pass matching flags to interpose as defined and used there\n\necryptfs_interpose checks if one of the flags passed is\nECRYPTFS_INTERPOSE_FLAG_D_ADD, defined as 0x00000001 in ecryptfs_kernel.h.\nBut the only user of ecryptfs_interpose to pass a non-zero flag to it, has\nhard-coded the value as \"1\". This could spell trouble if any of these values\nchanges in the future.\n\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c44a66d674688f1e1d0b2f6f56bd9c6a1b061cae",
      "tree": "52ff029a1c19b11b75ccc25ed7a5e00619e05800",
      "parents": [
        "0d132f7364694da8f7cafd49e2fc2721b73e96e4"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Sun Dec 06 18:05:30 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:36:00 2010 -0600"
      },
      "message": "ecryptfs: remove unnecessary d_drop calls in ecryptfs_link\n\nUnnecessary because it would unhash perfectly valid dentries, causing them\nto have to be re-looked up the next time they\u0027re needed, which presumably is\nright after.\n\nSigned-off-by: Aseem Rastogi \u003carastogi@cs.sunysb.edu\u003e\nSigned-off-by: Shrikar archak \u003cshrikar84@gmail.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: Saumitra Bhanage \u003csbhanage@cs.sunysb.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0d132f7364694da8f7cafd49e2fc2721b73e96e4",
      "tree": "8603d76664307d039830796cc04a0e0363cf3b60",
      "parents": [
        "e27759d7a333d1f25d628c4f7caf845c51be51c2"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Sat Dec 05 21:17:09 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:35:59 2010 -0600"
      },
      "message": "ecryptfs: don\u0027t ignore return value from lock_rename\n\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e27759d7a333d1f25d628c4f7caf845c51be51c2",
      "tree": "6181c5f5abe8b2e4b7bdc45f1231c769cc57a403",
      "parents": [
        "38e3eaeedcac75360af8a92e7b66956ec4f334e5"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Thu Dec 03 13:35:27 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:32:54 2010 -0600"
      },
      "message": "ecryptfs: initialize private persistent file before dereferencing pointer\n\nEcryptfs_open dereferences a pointer to the private lower file (the one\nstored in the ecryptfs inode), without checking if the pointer is NULL.\nRight afterward, it initializes that pointer if it is NULL.  Swap order of\nstatements to first initialize.  Bug discovered by Duckjin Kang.\n\nSigned-off-by: Duckjin Kang \u003cfromdj2k@gmail.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "38e3eaeedcac75360af8a92e7b66956ec4f334e5",
      "tree": "ba194b5451033e29137d4c797edd8d508c470d42",
      "parents": [
        "f8f484d1b6677dd5cd5e7e605db747e8c30bbd47"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Nov 03 14:56:06 2009 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:32:11 2010 -0600"
      },
      "message": "eCryptfs: Remove mmap from directory operations\n\nAdrian reported that mkfontscale didn\u0027t work inside of eCryptfs mounts.\nStrace revealed the following:\n\nopen(\"./\", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) \u003d 3\nfcntl64(3, F_GETFD) \u003d 0x1 (flags FD_CLOEXEC)\nopen(\"./fonts.scale\", O_WRONLY|O_CREAT|O_TRUNC, 0666) \u003d 4\ngetdents(3, /* 80 entries */, 32768) \u003d 2304\nopen(\"./.\", O_RDONLY) \u003d 5\nfcntl64(5, F_SETFD, FD_CLOEXEC) \u003d 0\nfstat64(5, {st_mode\u003dS_IFDIR|0755, st_size\u003d16384, ...}) \u003d 0\nmmap2(NULL, 16384, PROT_READ, MAP_PRIVATE, 5, 0) \u003d 0xb7fcf000\nclose(5) \u003d 0\n--- SIGBUS (Bus error) @ 0 (0) ---\n+++ killed by SIGBUS +++\n\nThe mmap2() on a directory was successful, resulting in a SIGBUS\nsignal later.  This patch removes mmap() from the list of possible\necryptfs_dir_fops so that mmap() isn\u0027t possible on eCryptfs directory\nfiles.\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/400443\n\nReported-by: Adrian C. \u003canrxc@sysphere.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f8f484d1b6677dd5cd5e7e605db747e8c30bbd47",
      "tree": "67acfc58f5e952e4fd2720d2e5e77409db40b6b8",
      "parents": [
        "5f3ef64f4da1c587cdcfaaac72311225b7df094c"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Nov 04 02:48:01 2009 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:32:09 2010 -0600"
      },
      "message": "eCryptfs: Add getattr function\n\nThe i_blocks field of an eCryptfs inode cannot be trusted, but\ngeneric_fillattr() uses it to instantiate the blocks field of a stat()\nsyscall when a filesystem doesn\u0027t implement its own getattr().  Users\nhave noticed that the output of du is incorrect on newly created files.\n\nThis patch creates ecryptfs_getattr() which calls into the lower\nfilesystem\u0027s getattr() so that eCryptfs can use its kstat.blocks value\nafter calling generic_fillattr().  It is important to note that the\nblock count includes the eCryptfs metadata stored in the beginning of\nthe lower file plus any padding used to fill an extent before\nencryption.\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/390833\n\nReported-by: Dominic Sacré \u003cdominic.sacre@gmx.de\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5f3ef64f4da1c587cdcfaaac72311225b7df094c",
      "tree": "0bdf086980df60d73bc650cdc520b59029faaa5a",
      "parents": [
        "24bc7347da73a9ed3383056c3d0f28c0e361621e"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Oct 14 16:18:27 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jan 19 22:32:07 2010 -0600"
      },
      "message": "eCryptfs: Use notify_change for truncating lower inodes\n\nWhen truncating inodes in the lower filesystem, eCryptfs directly\ninvoked vmtruncate(). As Christoph Hellwig pointed out, vmtruncate() is\na filesystem helper function, but filesystems may need to do more than\njust a call to vmtruncate().\n\nThis patch moves the lower inode truncation out of ecryptfs_truncate()\nand renames the function to truncate_upper().  truncate_upper() updates\nan iattr for the lower inode to indicate if the lower inode needs to be\ntruncated upon return.  ecryptfs_setattr() then calls notify_change(),\nusing the updated iattr for the lower inode, to complete the truncation.\n\nFor eCryptfs functions needing to truncate, ecryptfs_truncate() is\nreintroduced as a simple way to truncate the upper inode to a specified\nsize and then truncate the lower inode accordingly.\n\nhttps://bugs.launchpad.net/bugs/451368\n\nReported-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: linux-fsdevel@vger.kernel.org\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "806892e9e12e731a0ca76c8f62ad95cf8eea9614",
      "tree": "a063df1524ed862ef2475052e1cc1c66de390dc2",
      "parents": [
        "6d125529c6cbfe570ce3bf9a0728548f087499da"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Jan 12 03:36:14 2010 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 14 09:05:26 2010 -0500"
      },
      "message": "ecryptfs: Fix refcnt leak on ecryptfs_follow_link() error path\n\nIf -\u003efollow_link handler return the error, it should decrement\nnd-\u003epath refcnt. But, ecryptfs_follow_link() doesn\u0027t decrement.\n\nThis patch fix it by using usual nd_set_link() style error handling,\ninstead of playing with nd-\u003epath.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9afa2fb6c13501e5b3536d15344fce4e5442c469",
      "tree": "470ff1993ad9e88e0ed3abf81cb7c9745919b33d",
      "parents": [
        "cb59861f03a626196a23fdef5e20ddbb8cca6466"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Wed Dec 02 19:51:54 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 10:57:30 2009 -0500"
      },
      "message": "fsstack/ecryptfs: remove unused get_nlinks param to fsstack_copy_attr_all\n\nThis get_nlinks parameter was never used by the only mainline user,\necryptfs; and it has never been used by unionfs or wrapfs either.\n\nAcked-by: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nAcked-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b65a9cfc2c38eebc33533280b8ad5841caee8b6e",
      "tree": "d6e5b713615cc5e65c900162ab09235ae4847909",
      "parents": [
        "0552f879d45cecc35d8e372a591fc5ed863bca58"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 06:27:40 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:47 2009 -0500"
      },
      "message": "Untangling ima mess, part 2: deal with counters\n\n* do ima_get_count() in __dentry_open()\n* stop doing that in followups\n* move ima_path_check() to right after nameidata_to_filp()\n* don\u0027t bump counters on it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "36520be8e32b49bd85a63b7b8b40cd07c3da59a5",
      "tree": "09adf04fad980a8024de3c01d3560a0f263708cd",
      "parents": [
        "ed1f21857e76a92a006e0f890a3d7f72953b1469"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Oct 05 14:25:44 2009 -0400"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Oct 08 11:31:38 2009 -0500"
      },
      "message": "ima: ecryptfs fix imbalance message\n\nThe unencrypted files are being measured.  Update the counters to get\nrid of the ecryptfs imbalance message. (http://bugzilla.redhat.com/519737)\n\nReported-by: Sachin Garg\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: David Safford \u003csafford@watson.ibm.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ed1f21857e76a92a006e0f890a3d7f72953b1469",
      "tree": "21645c57e1011e86fe803fa99544b2314e231cec",
      "parents": [
        "664fc5a4e7d0d7f3487e5c856b79f7dac79567fd"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Sep 29 02:33:59 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Oct 08 11:31:36 2009 -0500"
      },
      "message": "eCryptfs: Remove Kconfig NET dependency and select MD5\n\neCryptfs no longer uses a netlink interface to communicate with\necryptfsd, so NET is not a valid dependency anymore.\n\nMD5 is required and must be built for eCryptfs to be of any use.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "664fc5a4e7d0d7f3487e5c856b79f7dac79567fd",
      "tree": "9413c8d73c86ce091ab16bce2acadc4397bffba0",
      "parents": [
        "0eca52a92735f43462165efe00a7e394345fb38e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Sep 28 13:34:20 2009 -0700"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Thu Oct 08 11:21:12 2009 -0500"
      },
      "message": "ecryptfs: depends on CRYPTO\n\necryptfs uses crypto APIs so it should depend on CRYPTO.\nOtherwise many build errors occur. [63 lines not pasted]\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9c2d2056647790c5034d722bd24e9d913ebca73c",
      "tree": "38db96956ac0167b2a277429746c500b522bc5aa",
      "parents": [
        "96a7b9c2f5df899f302ade45cf17ad753fe130fd"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Sep 22 12:52:17 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:34 2009 -0500"
      },
      "message": "eCryptfs: Prevent lower dentry from going negative during unlink\n\nWhen calling vfs_unlink() on the lower dentry, d_delete() turns the\ndentry into a negative dentry when the d_count is 1.  This eventually\ncaused a NULL pointer deref when a read() or write() was done and the\nnegative dentry\u0027s d_inode was dereferenced in\necryptfs_read_update_atime() or ecryptfs_getxattr().\n\nPlacing mutt\u0027s tmpdir in an eCryptfs mount is what initially triggered\nthe oops and I was able to reproduce it with the following sequence:\n\nopen(\"/tmp/upper/foo\", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, 0600) \u003d 3\nlink(\"/tmp/upper/foo\", \"/tmp/upper/bar\") \u003d 0\nunlink(\"/tmp/upper/foo\")                \u003d 0\nopen(\"/tmp/upper/bar\", O_RDWR|O_CREAT|O_NOFOLLOW, 0600) \u003d 4\nunlink(\"/tmp/upper/bar\")                \u003d 0\nwrite(4, \"eCryptfs test\\n\"..., 14 \u003cunfinished ...\u003e\n+++ killed by SIGKILL +++\n\nhttps://bugs.launchpad.net/ecryptfs/+bug/387073\n\nReported-by: Loïc Minier \u003cloic.minier@canonical.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "96a7b9c2f5df899f302ade45cf17ad753fe130fd",
      "tree": "096b67dbaad8e795344554994e28433a1e5b5de1",
      "parents": [
        "3891959846709a19f76628e33478cd85edb0e79f"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 16 19:04:20 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:34 2009 -0500"
      },
      "message": "eCryptfs: Propagate vfs_read and vfs_write return codes\n\nErrors returned from vfs_read() and vfs_write() calls to the lower\nfilesystem were being masked as -EINVAL.  This caused some confusion to\nusers who saw EINVAL instead of ENOSPC when the disk was full, for\ninstance.\n\nAlso, the actual bytes read or written were not accessible by callers to\necryptfs_read_lower() and ecryptfs_write_lower(), which may be useful in\nsome cases.  This patch updates the error handling logic where those\nfunctions are called in order to accept positive return codes indicating\nsuccess.\n\nCc: Eric Sandeen \u003cesandeen@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3891959846709a19f76628e33478cd85edb0e79f",
      "tree": "5916035dc686c93b42c6b6b0045059db7c066f9c",
      "parents": [
        "df6ad33ba1b9846bd5f0e2b9016c30c20bc2d948"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Aug 26 01:54:56 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:32 2009 -0500"
      },
      "message": "eCryptfs: Validate global auth tok keys\n\nWhen searching through the global authentication tokens for a given key\nsignature, verify that a matching key has not been revoked and has not\nexpired.  This allows the `keyctl revoke` command to be properly used on\nkeys in use by eCryptfs.\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "df6ad33ba1b9846bd5f0e2b9016c30c20bc2d948",
      "tree": "5bed7a289830867f2bac4dc05f076b7121e41ae3",
      "parents": [
        "ac22ba23b659e34a5961aec8c945608e471b0d5b"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Fri Aug 21 04:27:46 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:32 2009 -0500"
      },
      "message": "eCryptfs: Filename encryption only supports password auth tokens\n\nReturns -ENOTSUPP when attempting to use filename encryption with\nsomething other than a password authentication token, such as a private\ntoken from openssl.  Using filename encryption with a userspace eCryptfs\nkey module is a future goal.  Until then, this patch handles the\nsituation a little better than simply using a BUG_ON().\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ac22ba23b659e34a5961aec8c945608e471b0d5b",
      "tree": "6629c15380fe2db238fa078e912f4cf393708161",
      "parents": [
        "b0105eaefa7cce8f4a941d0fc6354b250d30e745"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Aug 12 01:06:54 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:32 2009 -0500"
      },
      "message": "eCryptfs: Check for O_RDONLY lower inodes when opening lower files\n\nIf the lower inode is read-only, don\u0027t attempt to open the lower file\nread/write and don\u0027t hand off the open request to the privileged\neCryptfs kthread for opening it read/write.  Instead, only try an\nunprivileged, read-only open of the file and give up if that fails.\nThis patch fixes an oops when eCryptfs is mounted on top of a read-only\nmount.\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Eric Sandeen \u003cesandeen@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b0105eaefa7cce8f4a941d0fc6354b250d30e745",
      "tree": "60bed48ff88aa22d9ee36b64d23421cf9e50d2a8",
      "parents": [
        "382684984e93039a3bbd83b04d341b0ceb831519"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Aug 11 00:36:32 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:31 2009 -0500"
      },
      "message": "eCryptfs: Handle unrecognized tag 3 cipher codes\n\nReturns an error when an unrecognized cipher code is present in a tag 3\npacket or an ecryptfs_crypt_stat cannot be initialized.  Also sets an\ncrypt_stat-\u003etfm error pointer to NULL to ensure that it will not be\nincorrectly freed in ecryptfs_destroy_crypt_stat().\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: ecryptfs-devel@lists.launchpad.net\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "382684984e93039a3bbd83b04d341b0ceb831519",
      "tree": "039aa99f6651066a2aac7aec42b06da0a9b55402",
      "parents": [
        "aa06117f19944573cda0c4bee026c916b5256090"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Thu Aug 27 09:47:07 2009 -0700"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:31 2009 -0500"
      },
      "message": "ecryptfs: improved dependency checking and reporting\n\nSo, I compiled a 2.6.31-rc5 kernel with ecryptfs and loaded its module.\nWhen it came time to mount my filesystem, I got this in dmesg, and it\nrefused to mount:\n\n[93577.776637] Unable to allocate crypto cipher with name [aes]; rc \u003d [-2]\n[93577.783280] Error attempting to initialize key TFM cipher with name \u003d [aes]; rc \u003d [-2]\n[93577.791183] Error attempting to initialize cipher with name \u003d [aes] and key size \u003d [32]; rc \u003d [-2]\n[93577.800113] Error parsing options; rc \u003d [-22]\n\nI figured from the error message that I\u0027d either forgotten to load \"aes\"\nor that my key size was bogus.  Neither one of those was the case.  In\nfact, I was missing the CRYPTO_ECB config option and the \u0027ecb\u0027 module.\nUnfortunately, there\u0027s no trace of \u0027ecb\u0027 in that error message.\n\nI\u0027ve done two things to fix this.  First, I\u0027ve modified ecryptfs\u0027s\nKconfig entry to select CRYPTO_ECB and CRYPTO_CBC.  I also took CRYPTO\nout of the dependencies since the \u0027select\u0027 will take care of it for us.\n\nI\u0027ve also modified the error messages to print a string that should\ncontain both \u0027ecb\u0027 and \u0027aes\u0027 in my error case.  That will give any\nfuture users a chance of finding the right modules and Kconfig options.\n\nI also wonder if we should:\n\n\tselect CRYPTO_AES if !EMBEDDED\n\nsince I think most ecryptfs users are using AES like me.\n\nCc: ecryptfs-devel@lists.launchpad.net\nCc: linux-fsdevel@vger.kernel.org\nCc: linux-kernel@vger.kernel.org\nCc: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\n[tyhicks@linux.vnet.ibm.com: Removed extra newline, 80-char violation]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "aa06117f19944573cda0c4bee026c916b5256090",
      "tree": "e5cb24f500431a5201e7a50b1e9df62fbd24e1bb",
      "parents": [
        "05dafedb906425fe935199f4c92700d87285e3e9"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rdreier@cisco.com",
        "time": "Wed Jul 01 15:48:18 2009 -0700"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:30 2009 -0500"
      },
      "message": "eCryptfs: Fix lockdep-reported AB-BA mutex issue\n\nLockdep reports the following valid-looking possible AB-BA deadlock with\nglobal_auth_tok_list_mutex and keysig_list_mutex:\n\n  ecryptfs_new_file_context() -\u003e\n      ecryptfs_copy_mount_wide_sigs_to_inode_sigs() -\u003e\n          mutex_lock(\u0026mount_crypt_stat-\u003eglobal_auth_tok_list_mutex);\n          -\u003e ecryptfs_add_keysig() -\u003e\n              mutex_lock(\u0026crypt_stat-\u003ekeysig_list_mutex);\n\nvs\n\n  ecryptfs_generate_key_packet_set() -\u003e\n      mutex_lock(\u0026crypt_stat-\u003ekeysig_list_mutex);\n      -\u003e ecryptfs_find_global_auth_tok_for_sig() -\u003e\n          mutex_lock(\u0026mount_crypt_stat-\u003eglobal_auth_tok_list_mutex);\n\nie the two mutexes are taken in opposite orders in the two different\ncode paths.  I\u0027m not sure if this is a real bug where two threads could\nactually hit the two paths in parallel and deadlock, but it at least\nmakes lockdep impossible to use with ecryptfs since this report triggers\nevery time and disables future lockdep reporting.\n\nSince ecryptfs_add_keysig() is called only from the single callsite in\necryptfs_copy_mount_wide_sigs_to_inode_sigs(), the simplest fix seems to\nbe to move the lock of keysig_list_mutex back up outside of the where\nglobal_auth_tok_list_mutex is taken.  This patch does that, and fixes\nthe lockdep report on my system (and ecryptfs still works OK).\n\nThe full output of lockdep fixed by this patch is:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.31-2-generic #14~rbd2\n-------------------------------------------------------\ngdm/2640 is trying to acquire lock:\n (\u0026mount_crypt_stat-\u003eglobal_auth_tok_list_mutex){+.+.+.}, at: [\u003cffffffff8121591e\u003e] ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n\nbut task is already holding lock:\n (\u0026crypt_stat-\u003ekeysig_list_mutex){+.+.+.}, at: [\u003cffffffff81217728\u003e] ecryptfs_generate_key_packet_set+0x58/0x2b0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026crypt_stat-\u003ekeysig_list_mutex){+.+.+.}:\n       [\u003cffffffff8108c897\u003e] check_prev_add+0x2a7/0x370\n       [\u003cffffffff8108cfc1\u003e] validate_chain+0x661/0x750\n       [\u003cffffffff8108d2e7\u003e] __lock_acquire+0x237/0x430\n       [\u003cffffffff8108d585\u003e] lock_acquire+0xa5/0x150\n       [\u003cffffffff815526cd\u003e] __mutex_lock_common+0x4d/0x3d0\n       [\u003cffffffff81552b56\u003e] mutex_lock_nested+0x46/0x60\n       [\u003cffffffff8121526a\u003e] ecryptfs_add_keysig+0x5a/0xb0\n       [\u003cffffffff81213299\u003e] ecryptfs_copy_mount_wide_sigs_to_inode_sigs+0x59/0xb0\n       [\u003cffffffff81214b06\u003e] ecryptfs_new_file_context+0xa6/0x1a0\n       [\u003cffffffff8120e42a\u003e] ecryptfs_initialize_file+0x4a/0x140\n       [\u003cffffffff8120e54d\u003e] ecryptfs_create+0x2d/0x60\n       [\u003cffffffff8113a7d4\u003e] vfs_create+0xb4/0xe0\n       [\u003cffffffff8113a8c4\u003e] __open_namei_create+0xc4/0x110\n       [\u003cffffffff8113d1c1\u003e] do_filp_open+0xa01/0xae0\n       [\u003cffffffff8112d8d9\u003e] do_sys_open+0x69/0x140\n       [\u003cffffffff8112d9f0\u003e] sys_open+0x20/0x30\n       [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\n-\u003e #0 (\u0026mount_crypt_stat-\u003eglobal_auth_tok_list_mutex){+.+.+.}:\n       [\u003cffffffff8108c675\u003e] check_prev_add+0x85/0x370\n       [\u003cffffffff8108cfc1\u003e] validate_chain+0x661/0x750\n       [\u003cffffffff8108d2e7\u003e] __lock_acquire+0x237/0x430\n       [\u003cffffffff8108d585\u003e] lock_acquire+0xa5/0x150\n       [\u003cffffffff815526cd\u003e] __mutex_lock_common+0x4d/0x3d0\n       [\u003cffffffff81552b56\u003e] mutex_lock_nested+0x46/0x60\n       [\u003cffffffff8121591e\u003e] ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n       [\u003cffffffff812177d5\u003e] ecryptfs_generate_key_packet_set+0x105/0x2b0\n       [\u003cffffffff81212f49\u003e] ecryptfs_write_headers_virt+0xc9/0x120\n       [\u003cffffffff8121306d\u003e] ecryptfs_write_metadata+0xcd/0x200\n       [\u003cffffffff8120e44b\u003e] ecryptfs_initialize_file+0x6b/0x140\n       [\u003cffffffff8120e54d\u003e] ecryptfs_create+0x2d/0x60\n       [\u003cffffffff8113a7d4\u003e] vfs_create+0xb4/0xe0\n       [\u003cffffffff8113a8c4\u003e] __open_namei_create+0xc4/0x110\n       [\u003cffffffff8113d1c1\u003e] do_filp_open+0xa01/0xae0\n       [\u003cffffffff8112d8d9\u003e] do_sys_open+0x69/0x140\n       [\u003cffffffff8112d9f0\u003e] sys_open+0x20/0x30\n       [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nother info that might help us debug this:\n\n2 locks held by gdm/2640:\n #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#11){+.+.+.}, at: [\u003cffffffff8113cb8b\u003e] do_filp_open+0x3cb/0xae0\n #1:  (\u0026crypt_stat-\u003ekeysig_list_mutex){+.+.+.}, at: [\u003cffffffff81217728\u003e] ecryptfs_generate_key_packet_set+0x58/0x2b0\n\nstack backtrace:\nPid: 2640, comm: gdm Tainted: G         C 2.6.31-2-generic #14~rbd2\nCall Trace:\n [\u003cffffffff8108b988\u003e] print_circular_bug_tail+0xa8/0xf0\n [\u003cffffffff8108c675\u003e] check_prev_add+0x85/0x370\n [\u003cffffffff81094912\u003e] ? __module_text_address+0x12/0x60\n [\u003cffffffff8108cfc1\u003e] validate_chain+0x661/0x750\n [\u003cffffffff81017275\u003e] ? print_context_stack+0x85/0x140\n [\u003cffffffff81089c68\u003e] ? find_usage_backwards+0x38/0x160\n [\u003cffffffff8108d2e7\u003e] __lock_acquire+0x237/0x430\n [\u003cffffffff8108d585\u003e] lock_acquire+0xa5/0x150\n [\u003cffffffff8121591e\u003e] ? ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n [\u003cffffffff8108b0b0\u003e] ? check_usage_backwards+0x0/0xb0\n [\u003cffffffff815526cd\u003e] __mutex_lock_common+0x4d/0x3d0\n [\u003cffffffff8121591e\u003e] ? ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n [\u003cffffffff8121591e\u003e] ? ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n [\u003cffffffff8108c02c\u003e] ? mark_held_locks+0x6c/0xa0\n [\u003cffffffff81125b0d\u003e] ? kmem_cache_alloc+0xfd/0x1a0\n [\u003cffffffff8108c34d\u003e] ? trace_hardirqs_on_caller+0x14d/0x190\n [\u003cffffffff81552b56\u003e] mutex_lock_nested+0x46/0x60\n [\u003cffffffff8121591e\u003e] ecryptfs_find_global_auth_tok_for_sig+0x2e/0x90\n [\u003cffffffff812177d5\u003e] ecryptfs_generate_key_packet_set+0x105/0x2b0\n [\u003cffffffff81212f49\u003e] ecryptfs_write_headers_virt+0xc9/0x120\n [\u003cffffffff8121306d\u003e] ecryptfs_write_metadata+0xcd/0x200\n [\u003cffffffff81210240\u003e] ? ecryptfs_init_persistent_file+0x60/0xe0\n [\u003cffffffff8120e44b\u003e] ecryptfs_initialize_file+0x6b/0x140\n [\u003cffffffff8120e54d\u003e] ecryptfs_create+0x2d/0x60\n [\u003cffffffff8113a7d4\u003e] vfs_create+0xb4/0xe0\n [\u003cffffffff8113a8c4\u003e] __open_namei_create+0xc4/0x110\n [\u003cffffffff8113d1c1\u003e] do_filp_open+0xa01/0xae0\n [\u003cffffffff8129a93e\u003e] ? _raw_spin_unlock+0x5e/0xb0\n [\u003cffffffff8155410b\u003e] ? _spin_unlock+0x2b/0x40\n [\u003cffffffff81139e9b\u003e] ? getname+0x3b/0x240\n [\u003cffffffff81148a5a\u003e] ? alloc_fd+0xfa/0x140\n [\u003cffffffff8112d8d9\u003e] do_sys_open+0x69/0x140\n [\u003cffffffff81553b8f\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3f\n [\u003cffffffff8112d9f0\u003e] sys_open+0x20/0x30\n [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "05dafedb906425fe935199f4c92700d87285e3e9",
      "tree": "7f3162455188c322baf9c6ca9a2890394380201d",
      "parents": [
        "94e0fb086fc5663c38bbc0fe86d698be8314f82f"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "roland@digitalvampire.org",
        "time": "Tue Jul 14 13:32:56 2009 -0700"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:10:30 2009 -0500"
      },
      "message": "ecryptfs: Remove unneeded locking that triggers lockdep false positives\n\nIn ecryptfs_destroy_inode(), inode_info-\u003elower_file_mutex is locked,\nand just after the mutex is unlocked, the code does:\n\n \tkmem_cache_free(ecryptfs_inode_info_cache, inode_info);\n\nThis means that if another context could possibly try to take the same\nmutex as ecryptfs_destroy_inode(), then it could end up getting the\nmutex just before the data structure containing the mutex is freed.\nSo any such use would be an obvious use-after-free bug (catchable with\nslab poisoning or mutex debugging), and therefore the locking in\necryptfs_destroy_inode() is not needed and can be dropped.\n\nSimilarly, in ecryptfs_destroy_crypt_stat(), crypt_stat-\u003ekeysig_list_mutex\nis locked, and then the mutex is unlocked just before the code does:\n\n \tmemset(crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat));\n\nTherefore taking this mutex is similarly not necessary.\n\nRemoving this locking fixes false-positive lockdep reports such as the\nfollowing (and they are false-positives for exactly the same reason\nthat the locking is not needed):\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: inconsistent lock state ]\n2.6.31-2-generic #14~rbd3\n---------------------------------\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/323 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026inode_info-\u003elower_file_mutex){+.+.?.}, at: [\u003cffffffff81210d34\u003e] ecryptfs_destroy_inode+0x34/0x100\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cffffffff8108c02c\u003e] mark_held_locks+0x6c/0xa0\n  [\u003cffffffff8108c10f\u003e] lockdep_trace_alloc+0xaf/0xe0\n  [\u003cffffffff81125a51\u003e] kmem_cache_alloc+0x41/0x1a0\n  [\u003cffffffff8113117a\u003e] get_empty_filp+0x7a/0x1a0\n  [\u003cffffffff8112dd46\u003e] dentry_open+0x36/0xc0\n  [\u003cffffffff8121a36c\u003e] ecryptfs_privileged_open+0x5c/0x2e0\n  [\u003cffffffff81210283\u003e] ecryptfs_init_persistent_file+0xa3/0xe0\n  [\u003cffffffff8120e838\u003e] ecryptfs_lookup_and_interpose_lower+0x278/0x380\n  [\u003cffffffff8120f97a\u003e] ecryptfs_lookup+0x12a/0x250\n  [\u003cffffffff8113930a\u003e] real_lookup+0xea/0x160\n  [\u003cffffffff8113afc8\u003e] do_lookup+0xb8/0xf0\n  [\u003cffffffff8113b518\u003e] __link_path_walk+0x518/0x870\n  [\u003cffffffff8113bd9c\u003e] path_walk+0x5c/0xc0\n  [\u003cffffffff8113be5b\u003e] do_path_lookup+0x5b/0xa0\n  [\u003cffffffff8113bfe7\u003e] user_path_at+0x57/0xa0\n  [\u003cffffffff811340dc\u003e] vfs_fstatat+0x3c/0x80\n  [\u003cffffffff8113424b\u003e] vfs_stat+0x1b/0x20\n  [\u003cffffffff81134274\u003e] sys_newstat+0x24/0x50\n  [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n  [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\nirq event stamp: 7811\nhardirqs last  enabled at (7811): [\u003cffffffff810c037f\u003e] call_rcu+0x5f/0x90\nhardirqs last disabled at (7810): [\u003cffffffff810c0353\u003e] call_rcu+0x33/0x90\nsoftirqs last  enabled at (3764): [\u003cffffffff810631da\u003e] __do_softirq+0x14a/0x220\nsoftirqs last disabled at (3751): [\u003cffffffff8101440c\u003e] call_softirq+0x1c/0x30\n\nother info that might help us debug this:\n2 locks held by kswapd0/323:\n #0:  (shrinker_rwsem){++++..}, at: [\u003cffffffff810f67ed\u003e] shrink_slab+0x3d/0x190\n #1:  (\u0026type-\u003es_umount_key#35){.+.+..}, at: [\u003cffffffff811429a1\u003e] prune_dcache+0xd1/0x1b0\n\nstack backtrace:\nPid: 323, comm: kswapd0 Tainted: G         C 2.6.31-2-generic #14~rbd3\nCall Trace:\n [\u003cffffffff8108ad6c\u003e] print_usage_bug+0x18c/0x1a0\n [\u003cffffffff8108aff0\u003e] ? check_usage_forwards+0x0/0xc0\n [\u003cffffffff8108bac2\u003e] mark_lock_irq+0xf2/0x280\n [\u003cffffffff8108bd87\u003e] mark_lock+0x137/0x1d0\n [\u003cffffffff81164710\u003e] ? fsnotify_clear_marks_by_inode+0x30/0xf0\n [\u003cffffffff8108bee6\u003e] mark_irqflags+0xc6/0x1a0\n [\u003cffffffff8108d337\u003e] __lock_acquire+0x287/0x430\n [\u003cffffffff8108d585\u003e] lock_acquire+0xa5/0x150\n [\u003cffffffff81210d34\u003e] ? ecryptfs_destroy_inode+0x34/0x100\n [\u003cffffffff8108d2e7\u003e] ? __lock_acquire+0x237/0x430\n [\u003cffffffff815526ad\u003e] __mutex_lock_common+0x4d/0x3d0\n [\u003cffffffff81210d34\u003e] ? ecryptfs_destroy_inode+0x34/0x100\n [\u003cffffffff81164710\u003e] ? fsnotify_clear_marks_by_inode+0x30/0xf0\n [\u003cffffffff81210d34\u003e] ? ecryptfs_destroy_inode+0x34/0x100\n [\u003cffffffff8129a91e\u003e] ? _raw_spin_unlock+0x5e/0xb0\n [\u003cffffffff81552b36\u003e] mutex_lock_nested+0x46/0x60\n [\u003cffffffff81210d34\u003e] ecryptfs_destroy_inode+0x34/0x100\n [\u003cffffffff81145d27\u003e] destroy_inode+0x87/0xd0\n [\u003cffffffff81146b4c\u003e] generic_delete_inode+0x12c/0x1a0\n [\u003cffffffff81145832\u003e] iput+0x62/0x70\n [\u003cffffffff811423c8\u003e] dentry_iput+0x98/0x110\n [\u003cffffffff81142550\u003e] d_kill+0x50/0x80\n [\u003cffffffff81142623\u003e] prune_one_dentry+0xa3/0xc0\n [\u003cffffffff811428b1\u003e] __shrink_dcache_sb+0x271/0x290\n [\u003cffffffff811429d9\u003e] prune_dcache+0x109/0x1b0\n [\u003cffffffff81142abf\u003e] shrink_dcache_memory+0x3f/0x50\n [\u003cffffffff810f68dd\u003e] shrink_slab+0x12d/0x190\n [\u003cffffffff810f9377\u003e] balance_pgdat+0x4d7/0x640\n [\u003cffffffff8104c4c0\u003e] ? finish_task_switch+0x40/0x150\n [\u003cffffffff810f63c0\u003e] ? isolate_pages_global+0x0/0x60\n [\u003cffffffff810f95f7\u003e] kswapd+0x117/0x170\n [\u003cffffffff810777a0\u003e] ? autoremove_wake_function+0x0/0x40\n [\u003cffffffff810f94e0\u003e] ? kswapd+0x0/0x170\n [\u003cffffffff810773be\u003e] kthread+0x9e/0xb0\n [\u003cffffffff8101430a\u003e] child_rip+0xa/0x20\n [\u003cffffffff81013c90\u003e] ? restore_args+0x0/0x30\n [\u003cffffffff81077320\u003e] ? kthread+0x0/0xb0\n [\u003cffffffff81014300\u003e] ? child_rip+0x0/0x20\n\nSigned-off-by: Roland Dreier \u003croland@digitalvampire.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f151cd2c54ddc7714e2f740681350476cda03a28",
      "tree": "81591bb25357c0d02a0549efadb62b67ba166434",
      "parents": [
        "6352a29305373ae6196491e6d4669f301e26492e"
      ],
      "author": {
        "name": "Ramon de Carvalho Valle",
        "email": "ramon@risesecurity.org",
        "time": "Tue Jul 28 13:58:22 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 28 14:26:06 2009 -0700"
      },
      "message": "eCryptfs: parse_tag_3_packet check tag 3 packet encrypted key size\n\nThe parse_tag_3_packet function does not check if the tag 3 packet contains a\nencrypted key size larger than ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES.\n\nSigned-off-by: Ramon de Carvalho Valle \u003cramon@risesecurity.org\u003e\n[tyhicks@linux.vnet.ibm.com: Added printk newline and changed goto to out_free]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nCc: stable@kernel.org (2.6.27 and 30)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6352a29305373ae6196491e6d4669f301e26492e",
      "tree": "ef68d8601812e1b190f67b69373ff5210191ea45",
      "parents": [
        "4733fd328f14280900435d9dbae1487d110a4d56"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Tue Jul 28 13:57:01 2009 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 28 14:26:06 2009 -0700"
      },
      "message": "eCryptfs: Check Tag 11 literal data buffer size\n\nTag 11 packets are stored in the metadata section of an eCryptfs file to\nstore the key signature(s) used to encrypt the file encryption key.\nAfter extracting the packet length field to determine the key signature\nlength, a check is not performed to see if the length would exceed the\nkey signature buffer size that was passed into parse_tag_11_packet().\n\nThanks to Ramon de Carvalho Valle for finding this bug using fsfuzzer.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nCc: stable@kernel.org (2.6.27 and 30)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f5bbff9a1b7d6864a495763448a363bbfa96324",
      "tree": "0067dca46f40def1c55541c34c262e06aeb8c4c8",
      "parents": [
        "74dbbdd7fdc11763f4698d2f3e684cf4446951e6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 01:34:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:40 2009 -0400"
      },
      "message": "Convert obvious places to deactivate_locked_super()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ac20100df7a7a042423dcb8847f42d9f6ddb8d00",
      "tree": "59aefe9f3a2a0a6216e60d3f4304862b26146047",
      "parents": [
        "802b352f2934f799ec2e159f61db6506094a936e"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 27 13:31:12 2009 -0500"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Apr 27 13:31:12 2009 -0500"
      },
      "message": "eCryptfs: Fix min function comparison warning\n\nThis warning shows up on 64 bit builds:\n\nfs/ecryptfs/inode.c:693: warning: comparison of distinct pointer types\nlacks a cast\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    }
  ],
  "next": "802b352f2934f799ec2e159f61db6506094a936e"
}
