# HG changeset patch # User nr123932 # Date 1175541084 25200 # Node ID ed1a1295c3740f5013cc0b7a9aee5629343a21a5 # Parent 0cc6f51aa203c14cb51783be2125bbf291971213 6436336 5.10:named pipe in chroot cage blocks as cannot create diff -r 0cc6f51aa203 -r ed1a1295c374 usr/src/uts/common/fs/fifofs/fifosubr.c --- a/usr/src/uts/common/fs/fifofs/fifosubr.c Mon Apr 02 05:33:26 2007 -0700 +++ b/usr/src/uts/common/fs/fifofs/fifosubr.c Mon Apr 02 12:11:24 2007 -0700 @@ -394,6 +394,7 @@ fifodata_t *fdp; vnode_t *newvp; struct vattr va; + vnode_t *rvp; ASSERT(vp != NULL); @@ -403,18 +404,14 @@ fnp = &fdp->fifo_fnode[0]; /* - * In Trusted Extensions cross-zone named pipes - * are supported subject to the MAC policy. Since - * cross-zone access is done using lofs mounts, - * it is necessary to use the real vnode so that - * matching ends of the fifo can find each other. + * Its possible that fifo nodes on different lofs mountpoints + * shadow the same real filesystem fifo node. + * In this case its necessary to get and store the realvp. + * This way different fifo nodes sharing the same real vnode + * can use realvp for communication. */ - if (is_system_labeled()) { - vnode_t *rvp; - - if (VOP_REALVP(vp, &rvp) == 0) - vp = rvp; - } + if (VOP_REALVP(vp, &rvp) == 0) + vp = rvp; fnp->fn_realvp = vp; fnp->fn_wcnt = 0;