Print this page
OS-3137 lxbrand pipe does not pollnotify when end is closed
        
*** 612,624 ****
          }
  
          /*
           * The other end of the pipe is almost closed so
           * reject any other open on this end of the pipe
!          * This only happens with a pipe mounted under namefs
           */
!         if ((fnp->fn_flag & (FIFOCLOSE|ISPIPE)) == (FIFOCLOSE|ISPIPE)) {
                  fifo_cleanup(oldvp, flag);
                  cv_broadcast(&fnp->fn_wait_cv);
                  if (!lockheld)
                          mutex_exit(&fn_lock->flk_lock);
                  return (ENXIO);
--- 612,627 ----
          }
  
          /*
           * The other end of the pipe is almost closed so
           * reject any other open on this end of the pipe
!          * This normally only happens with a pipe mounted under namefs, but
!          * we can also see an open via proc/fd, which should still succeed.
!          * To indicate the proc/fd case the FKLYR flag is passed.
           */
!         if ((fnp->fn_flag & (FIFOCLOSE|ISPIPE)) == (FIFOCLOSE|ISPIPE) &&
!             (flag & FKLYR) == 0) {
                  fifo_cleanup(oldvp, flag);
                  cv_broadcast(&fnp->fn_wait_cv);
                  if (!lockheld)
                          mutex_exit(&fn_lock->flk_lock);
                  return (ENXIO);