Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/uvm
Module Name: src
Committed By: thorpej
Date: Tue Mar 4 06:18:55 UTC 2003
Modified Files:
src/sys/uvm: uvm_init.c uvm_loan.c uvm_loan.h
Log Message:
Fix the following pathological scanario:
* User allocates ZFOD region, but does not actually touch the buffer
to fault in the pages.
* In a loop, user writes this buffer to a network socket, triggering
sosend_loan().
* uvm_loan() calls uvm_loanzero() once for each page in the loaned
region (since the pages have not yet faulted in). This causes a
page to be allocated and zero'd. The result is the kernel spends
a lot of time allocating and zero'ing pages.
This fixes creates a special object which owns a single zero'd page.
This single zero'd page is used to satisfy all loans of non-resident
ZFOD mappings.
Thanks to Allen Briggs for discovering the problem and for providing
an initial patch.
To generate a diff of this commit:
cvs rdiff -r1.15 -r1.16 src/sys/uvm/uvm_init.c
cvs rdiff -r1.39 -r1.40 src/sys/uvm/uvm_loan.c
cvs rdiff -r1.9 -r1.10 src/sys/uvm/uvm_loan.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index