Merge remote-tracking branch 'userns/for-next'
authorThierry Reding <treding@nvidia.com>
Thu, 24 Oct 2013 13:02:30 +0000 (15:02 +0200)
committerThierry Reding <treding@nvidia.com>
Thu, 24 Oct 2013 13:02:30 +0000 (15:02 +0200)
Conflicts:
fs/fuse/dir.c

1  2 
fs/afs/dir.c
fs/dcache.c
fs/fuse/dir.c
fs/namei.c
fs/namespace.c
fs/nfs/dir.c
fs/sysfs/dir.c
include/linux/dcache.h

diff --cc fs/afs/dir.c
Simple merge
diff --cc fs/dcache.c
Simple merge
diff --cc fs/fuse/dir.c
@@@ -263,9 -259,7 +263,10 @@@ out
  
  invalid:
        ret = 0;
 -      shrink_submounts_and_drop(entry);
 +
-       if (!(flags & LOOKUP_RCU) && check_submounts_and_drop(entry) != 0)
-               ret = 1;
++      if (!(flags & LOOKUP_RCU))
++              shrink_submounts_and_drop(entry);
++
        goto out;
  }
  
diff --cc fs/namei.c
Simple merge
diff --cc fs/namespace.c
Simple merge
diff --cc fs/nfs/dir.c
@@@ -1128,13 -1142,11 +1128,10 @@@ out_zap_parent
                if (dentry->d_flags & DCACHE_DISCONNECTED)
                        goto out_valid;
        }
-       /* If we have submounts, don't unhash ! */
-       if (check_submounts_and_drop(dentry) != 0)
-               goto out_valid;
+       shrink_submounts_and_drop(dentry);
        dput(parent);
 -      dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is invalid\n",
 -                      __func__, dentry->d_parent->d_name.name,
 -                      dentry->d_name.name);
 +      dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n",
 +                      __func__, dentry);
        return 0;
  out_error:
        nfs_free_fattr(fattr);
diff --cc fs/sysfs/dir.c
@@@ -311,11 -318,15 +311,10 @@@ static int sysfs_dentry_revalidate(stru
                goto out_bad;
  
        /* The sysfs dirent has been moved to a different namespace */
 -      type = KOBJ_NS_TYPE_NONE;
 -      if (sd->s_parent) {
 -              type = sysfs_ns_type(sd->s_parent);
 -              if (type != KOBJ_NS_TYPE_NONE &&
 -                              sysfs_info(dentry->d_sb)->ns[type] != sd->s_ns)
 -                      goto out_bad;
 -      }
 +      if (sd->s_ns && sd->s_ns != sysfs_info(dentry->d_sb)->ns)
 +              goto out_bad;
  
        mutex_unlock(&sysfs_mutex);
- out_valid:
        return 1;
  out_bad:
        /* Remove the dentry from the dcache hashes.
Simple merge