aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs/dir.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2012-07-09 19:13:36 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-07-17 12:43:55 -0400
commit17f79be93d95bb0e46bd08681ec9c9e601869c15 (patch)
treeec9ab980fdd6ef43654668f6d4524f236de1bcc2 /fs/sysfs/dir.c
parente5bcac61472ca627241b394d439decd00bba3aea (diff)
sysfs: fail dentry revalidation after namespace change fix
don't assume that KOBJ_NS_TYPE_NONE==0. Also save a test-n-branch. Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Glauber Costa <glommer@parallels.com> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/sysfs/dir.c')
-rw-r--r--fs/sysfs/dir.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index c0bf38a21caa..1cdfb53199aa 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -329,10 +329,12 @@ static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
329 329
330 /* The sysfs dirent has been moved to a different namespace */ 330 /* The sysfs dirent has been moved to a different namespace */
331 type = KOBJ_NS_TYPE_NONE; 331 type = KOBJ_NS_TYPE_NONE;
332 if (sd->s_parent) 332 if (sd->s_parent) {
333 type = sysfs_ns_type(sd->s_parent); 333 type = sysfs_ns_type(sd->s_parent);
334 if (type && (sysfs_info(dentry->d_sb)->ns[type] != sd->s_ns)) 334 if (type != KOBJ_NS_TYPE_NONE &&
335 goto out_bad; 335 sysfs_info(dentry->d_sb)->ns[type] != sd->s_ns)
336 goto out_bad;
337 }
336 338
337 mutex_unlock(&sysfs_mutex); 339 mutex_unlock(&sysfs_mutex);
338out_valid: 340out_valid: