--- linux-2.6.9-vs1.9.3.1/fs/namei.c 2004-11-06 05:52:09.000000000 +0100 +++ linux-2.6.9-vs1.9.3.1-P1/fs/namei.c 2004-11-07 09:15:05.000000000 +0100 @@ -636,15 +636,22 @@ static int do_lookup(struct nameidata *n { struct vfsmount *mnt = nd->mnt; struct dentry *dentry = __d_lookup(nd->dentry, name); + struct inode *inode; if (!dentry) goto need_lookup; if (dentry->d_op && dentry->d_op->d_revalidate) goto need_revalidate; + inode = dentry->d_inode; + if (inode && !vx_check(inode->i_xid, VX_ADMIN|VX_IDENT)) + goto hidden; done: path->mnt = mnt; path->dentry = dentry; return 0; +hidden: + dput(dentry); + return -ESRCH; need_lookup: dentry = real_lookup(nd->dentry, name, nd);