diff -NurpP linux-2.6.22.9-vs2.3.0.26.6/fs/namei.c linux-2.6.22.9-vs2.3.0.26.7/fs/namei.c --- linux-2.6.22.9-vs2.3.0.26.6/fs/namei.c 2007-10-10 19:14:11 +0200 +++ linux-2.6.22.9-vs2.3.0.26.7/fs/namei.c 2007-10-10 19:47:18 +0200 @@ -816,15 +816,21 @@ static int do_lookup(struct nameidata *n inode = dentry->d_inode; if (!inode) goto done; + if (inode->i_sb->s_magic == PROC_SUPER_MAGIC) { struct proc_dir_entry *de = PDE(inode); if (de && !vx_hide_check(0, de->vx_flags)) goto hidden; + } else if (inode->i_sb->s_magic == DEVPTS_SUPER_MAGIC) { + if (!vx_check((xid_t)inode->i_tag, + DX_WATCH | DX_ADMIN | DX_HOSTID | DX_IDENT)) + goto hidden; + } else { + if (!dx_notagcheck(nd) && !dx_check(inode->i_tag, + DX_WATCH | DX_ADMIN | DX_HOSTID | DX_IDENT)) + goto hidden; } - if (!dx_notagcheck(nd) && - !dx_check(inode->i_tag, DX_WATCH|DX_ADMIN|DX_HOSTID|DX_IDENT)) - goto hidden; done: path->mnt = mnt; path->dentry = dentry;