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:   kre
Date:           Thu Mar 14 19:10:04 UTC 2019

Modified Files:
        src/sys/uvm: uvm_map.c uvm_mmap.c uvm_page.c

Log Message:
Avoid a panic from the sequence

        mlock(buf, 0);
        munlock(buf, 0);
        mlock(buf, page);
        munlock(buf, page);

where buf is page aligned, and page is actually anything > 0
(but not too big) which will get rounded up to the next multiple
of the page size.

In that sequence, it is possible that the 1st munlock() is optional.

Add a KASSERT() (or two) to detect the first effects of the problem
(without that, or in !DIAGNOSTIC kernels) the problem eventually
causes some kind of problem or other (most often still a panic.)

After this, mlock(anything, 0) (or munlock) validates "anything"
but is otherwise a no-op (regardless of the alignment of anything).

Also, don't treat mlock(buf, verybig) as equivalent to mlock(buf, 0)
which is (more or less) what we had been doing.

XXX pullup -8 (maybe -7 as well, need to check).


To generate a diff of this commit:
cvs rdiff -u -r1.358 -r1.359 src/sys/uvm/uvm_map.c
cvs rdiff -u -r1.169 -r1.170 src/sys/uvm/uvm_mmap.c
cvs rdiff -u -r1.198 -r1.199 src/sys/uvm/uvm_page.c

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