kernel - Fix sendfile() bugs / nginx
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 23 Aug 2014 17:53:25 +0000 (10:53 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 23 Aug 2014 17:53:25 +0000 (10:53 -0700)
commit799312a2b6e22a583d98633ea6b62146afa8eb45
treefaaa7ed60e54c53f189e082827e22cfd4a8de266
parent71802849907d9901745f2f76914c287f345da877
kernel - Fix sendfile() bugs / nginx

* Fix a sendfile() bug tickled by nginx.  When sending partial file bodies the
  nbytes test was improperly included the header bytes in its file body limit
  test.  This caused sendfile() to return 0 (complete success) but not
  actually output the entirety of the requested file segment.

* sendfile() now holds VM pages instead of wiring them.  Wiring the pages
  prevents truncation operations from succeeded and can further cause a
  kernel panic if the underlying file is deleted and the descriptor is
  closed while mbufs related to the sendfile() are still pending on the
  socket.

Massive-debugging-by: joris
sys/kern/uipc_syscalls.c