Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 28 May 2016 00:14:05 +0000 (17:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 28 May 2016 00:14:05 +0000 (17:14 -0700)
Pull vfs fixes from Al Viro:
 "Followups to the parallel lookup work:

   - update docs

   - restore killability of the places that used to take ->i_mutex
     killably now that we have down_write_killable() merged

   - Additionally, it turns out that I missed a prerequisite for
     security_d_instantiate() stuff - ->getxattr() wasn't the only thing
     that could be called before dentry is attached to inode; with smack
     we needed the same treatment applied to ->setxattr() as well"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  switch ->setxattr() to passing dentry and inode separately
  switch xattr_handler->set() to passing dentry and inode separately
  restore killability of old mutex_lock_killable(&inode->i_mutex) users
  add down_write_killable_nested()
  update D/f/directory-locking

1  2 
fs/btrfs/ioctl.c
fs/ceph/xattr.c
fs/nfs/nfs4proc.c
fs/overlayfs/overlayfs.h
fs/overlayfs/readdir.c
fs/xfs/xfs_xattr.c
include/linux/fs.h

Simple merge
diff --cc fs/ceph/xattr.c
Simple merge
Simple merge
Simple merge
index d11ae826bcbc94215abc441a4c1d53434691e5c4,9e79f6458dfbfc564eab296d0d96d15ee491506a..cf37fc76fc9fc02f00caf5a64bd632f20942a528
@@@ -207,12 -206,19 +207,10 @@@ static int ovl_check_whiteouts(struct d
        struct ovl_cache_entry *p;
        struct dentry *dentry;
        const struct cred *old_cred;
 -      struct cred *override_cred;
 -
 -      override_cred = prepare_creds();
 -      if (!override_cred)
 -              return -ENOMEM;
  
 -      /*
 -       * CAP_DAC_OVERRIDE for lookup
 -       */
 -      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
 -      old_cred = override_creds(override_cred);
 +      old_cred = ovl_override_creds(rdd->dentry->d_sb);
  
-       inode_lock(dir->d_inode);
-       err = 0;
-       // XXX: err = mutex_lock_killable(&dir->d_inode->i_mutex);
+       err = down_write_killable(&dir->d_inode->i_rwsem);
        if (!err) {
                while (rdd->first_maybe_whiteout) {
                        p = rdd->first_maybe_whiteout;
Simple merge
Simple merge