--- linux/fs/supermount/dentry_operations.c.orig Fri May 17 00:36:21 2002 +++ linux/fs/supermount/dentry_operations.c Fri May 17 01:16:06 2002 @@ -25,8 +25,9 @@ dump_dentry(dentry); - if (!subfs_go_online(dentry->d_sb)) - goto bad_dentry; + if (!subfs_go_online(dentry->d_sb)) { + goto out; + } spin_lock(&dcache_lock); if (dentry->d_inode && is_inode_obsolete(dentry->d_inode)) { supermount_debug("found old dentry: **%s**", @@ -36,20 +37,21 @@ } spin_unlock(&dcache_lock); subd = get_subfs_dentry(dentry); - if (IS_ERR(subd)) + if (IS_ERR(subd)) { goto bad_dentry; + } if (subd->d_op && subd->d_op->d_revalidate) { supermount_debug("lowlevel revalidate"); rc = subd->d_op->d_revalidate(subd, flags); } dput(subd); + goto out; +bad_dentry: + rc = 0; out: subfs_go_inactive(dentry->d_sb); return rc; -bad_dentry: - rc = 0; - goto out; } struct dentry_operations supermount_dir_dops = {