1. 01 1月, 2009 1 次提交
  2. 25 11月, 2008 1 次提交
    • S
      User namespaces: set of cleanups (v2) · 18b6e041
      Serge Hallyn 提交于
      The user_ns is moved from nsproxy to user_struct, so that a struct
      cred by itself is sufficient to determine access (which it otherwise
      would not be).  Corresponding ecryptfs fixes (by David Howells) are
      here as well.
      
      Fix refcounting.  The following rules now apply:
              1. The task pins the user struct.
              2. The user struct pins its user namespace.
              3. The user namespace pins the struct user which created it.
      
      User namespaces are cloned during copy_creds().  Unsharing a new user_ns
      is no longer possible.  (We could re-add that, but it'll cause code
      duplication and doesn't seem useful if PAM doesn't need to clone user
      namespaces).
      
      When a user namespace is created, its first user (uid 0) gets empty
      keyrings and a clean group_info.
      
      This incorporates a previous patch by David Howells.  Here
      is his original patch description:
      
      >I suggest adding the attached incremental patch.  It makes the following
      >changes:
      >
      > (1) Provides a current_user_ns() macro to wrap accesses to current's user
      >     namespace.
      >
      > (2) Fixes eCryptFS.
      >
      > (3) Renames create_new_userns() to create_user_ns() to be more consistent
      >     with the other associated functions and because the 'new' in the name is
      >     superfluous.
      >
      > (4) Moves the argument and permission checks made for CLONE_NEWUSER to the
      >     beginning of do_fork() so that they're done prior to making any attempts
      >     at allocation.
      >
      > (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds
      >     to fill in rather than have it return the new root user.  I don't imagine
      >     the new root user being used for anything other than filling in a cred
      >     struct.
      >
      >     This also permits me to get rid of a get_uid() and a free_uid(), as the
      >     reference the creds were holding on the old user_struct can just be
      >     transferred to the new namespace's creator pointer.
      >
      > (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under
      >     preparation rather than doing it in copy_creds().
      >
      >David
      
      >Signed-off-by: David Howells <dhowells@redhat.com>
      
      Changelog:
      	Oct 20: integrate dhowells comments
      		1. leave thread_keyring alone
      		2. use current_user_ns() in set_user()
      Signed-off-by: NSerge Hallyn <serue@us.ibm.com>
      18b6e041
  3. 20 11月, 2008 1 次提交
    • M
      eCryptfs: Allocate up to two scatterlists for crypto ops on keys · ac97b9f9
      Michael Halcrow 提交于
      I have received some reports of out-of-memory errors on some older AMD
      architectures.  These errors are what I would expect to see if
      crypt_stat->key were split between two separate pages.  eCryptfs should
      not assume that any of the memory sent through virt_to_scatterlist() is
      all contained in a single page, and so this patch allocates two
      scatterlist structs instead of one when processing keys.  I have received
      confirmation from one person affected by this bug that this patch resolves
      the issue for him, and so I am submitting it for inclusion in a future
      stable release.
      
      Note that virt_to_scatterlist() runs sg_init_table() on the scatterlist
      structs passed to it, so the calls to sg_init_table() in
      decrypt_passphrase_encrypted_session_key() are redundant.
      Signed-off-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Reported-by: NPaulo J. S. Silva <pjssilva@ime.usp.br>
      Cc: "Leon Woestenberg" <leon.woestenberg@gmail.com>
      Cc: Tim Gardner <tim.gardner@canonical.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ac97b9f9
  4. 14 11月, 2008 2 次提交
  5. 31 10月, 2008 1 次提交
    • E
      ecryptfs: fix memory corruption when storing crypto info in xattrs · 87b811c3
      Eric Sandeen 提交于
      When ecryptfs allocates space to write crypto headers into, before copying
      it out to file headers or to xattrs, it looks at the value of
      crypt_stat->num_header_bytes_at_front to determine how much space it
      needs.  This is also used as the file offset to the actual encrypted data,
      so for xattr-stored crypto info, the value was zero.
      
      So, we kzalloc'd 0 bytes, and then ran off to write to that memory.
      (Which returned as ZERO_SIZE_PTR, so we explode quickly).
      
      The right answer is to always allocate a page to write into; the current
      code won't ever write more than that (this is enforced by the
      (PAGE_CACHE_SIZE - offset) length in the call to
      ecryptfs_generate_key_packet_set).  To be explicit about this, we now send
      in a "max" parameter, rather than magically using PAGE_CACHE_SIZE there.
      
      Also, since the pointer we pass down the callchain eventually gets the
      virt_to_page() treatment, we should be using a alloc_page variant, not
      kzalloc (see also 7fcba054)
      Signed-off-by: NEric Sandeen <sandeen@redhat.com>
      Acked-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      87b811c3
  6. 23 10月, 2008 1 次提交
  7. 17 10月, 2008 3 次提交
  8. 14 10月, 2008 1 次提交
  9. 29 7月, 2008 1 次提交
  10. 27 7月, 2008 4 次提交
  11. 25 7月, 2008 8 次提交
  12. 05 7月, 2008 1 次提交
  13. 03 7月, 2008 1 次提交
  14. 07 6月, 2008 1 次提交
    • M
      eCryptfs: remove unnecessary page decrypt call · d3e49afb
      Michael Halcrow 提交于
      The page decrypt calls in ecryptfs_write() are both pointless and buggy.
      Pointless because ecryptfs_get_locked_page() has already brought the page
      up to date, and buggy because prior mmap writes will just be blown away by
      the decrypt call.
      
      This patch also removes the declaration of a now-nonexistent function
      ecryptfs_write_zeros().
      
      Thanks to Eric Sandeen and David Kleikamp for helping to track this
      down.
      
      Eric said:
      
         fsx w/ mmap dies quickly ( < 100 ops) without this, and survives
         nicely (to millions of ops+) with it in place.
      Signed-off-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Cc: Eric Sandeen <sandeen@redhat.com>
      Cc: Dave Kleikamp <shaggy@austin.ibm.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d3e49afb
  15. 25 5月, 2008 1 次提交
  16. 22 5月, 2008 1 次提交
  17. 13 5月, 2008 2 次提交
  18. 29 4月, 2008 8 次提交
  19. 20 3月, 2008 1 次提交