cvs commit: src/sys/kern uipc_syscalls.c

Robert Watson rwatson at FreeBSD.org
Sun Apr 27 15:50:01 UTC 2008


rwatson     2008-04-27 15:50:00 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             uipc_syscalls.c 
  Log:
  When writing trailers in sendfile(2), don't call kern_writev()
  while holding the socket buffer lock.  These leads to an
  immediate panic due to recursing the socket buffer lock.  This
  bug was introduced in uipc_syscalls.c:1.240, but masked by
  another bug until that was fixed in uipc_syscalls.c:1.269.
  
  Note that the current fix isn't perfect, but better than
  panicking: normally we guarantee that simultaneous invocations
  of a system call to write on a stream socket won't be
  interlaced, which is ensured by use of the socket buffer sleep
  lock.  This is guaranteed for the sendfile headers, but not
  trailers.  In practice, this is likely not a problem, but
  should be fixed.
  
  MFC after:      3 days
  Pointy hat to:  andre (1.240), cperciva (1.269)
  
  Revision  Changes    Path
  1.271     +4 -3      src/sys/kern/uipc_syscalls.c


More information about the cvs-all mailing list