Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Feb 2004 15:00:14 -0800 (PST)
From:      Brian Feldman <green@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern sys_pipe.c
Message-ID:  <200402222300.i1MN0E0Q018760@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
green       2004/02/22 15:00:14 PST

  FreeBSD src repository

  Modified files:
    sys/kern             sys_pipe.c 
  Log:
  Correct some major SMP-harmful problems in the pipe implementation.  First
  of all, PIPE_EOF is not checked pervasively after everything that can drop
  the pipe mutex and msleep(), so fix.  Additionally, though it might not
  harm anything, pipelock() and pipeunlock() are not used consistently.
  Third, the kqueue support functions do not use the pipe mutex correctly.
  Last, but absolutely not least, is a race: if pipe_busy is not set on
  the closing side of the pipe, the other side that is trying to write to
  that will crash BECAUSE PIPE_EOF IS NOT SET!  Unconditionally set
  PIPE_EOF, and get rid of all the lockups/crashes I have seen trying
  to build ports.
  
  Revision  Changes    Path
  1.168     +66 -41    src/sys/kern/sys_pipe.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402222300.i1MN0E0Q018760>