Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Dec 1999 18:55:49 -0800 (PST)
From:      Tor Egge <tegge@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern sys_pipe.c
Message-ID:  <199912130255.SAA67596@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
tegge       1999/12/12 18:55:49 PST

  Modified files:
    sys/kern             sys_pipe.c 
  Log:
  Fix two problems with pipe_write():
  
   1. Data written beyond end of pipe buffer, causing kernel memory corruption.
  
      - Check that space is still valid after obtaining the pipe lock.
  
      - Defer the calculation of transfer size until the pipe
        lock has been obtained.
  
      - Update the pipe buffer pointers while holding the pipe lock.
  
   2. Writes of size <= PIPE_BUF not always atomic.
  
      - Allow an internal write to span two contiguous segments,
        so writes of size <= PIPE_BUF can be kept atomic
        when wrapping around from the end to the start of the
        pipe buffer.
  
  PR:		15235
  Reviewed by:	Matt Dillon <dillon@FreeBSD.org>
  
  Revision  Changes    Path
  1.59      +65 -24    src/sys/kern/sys_pipe.c



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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