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>