Matthew Dillon's most recent VM work

| No Comments | No TrackBacks |

From the commit log:

Close an interrupt race between vm_page_lookup() and (typically) a vm_page_sleep_busy() check by using the correct spl protection. An interrupt can occur inbetween the two operations and unbusy/free the page in question, causing the busy check to fail and for the code to fall through and then operate on a page that may have been freed and possibly even reused. Also note that vm_page_grab() had the same issue between the lookup, busy check, and vm_page_busy() call.

Close an interrupt race when scanning a VM object's memq. Interrupts can free pages, removing them from memq, which interferes with memq scans and can cause a page unassociated with the object to be processed as if it were associated with the object.

Calls to vm_page_hold() and vm_page_unhold() require spl protection.

Rename the passed socket descriptor argument in sendfile() to make the code more readable.

Fix several serious bugs in procfs_rwmem(). In particular, force it to block if a page is busy and then retry.

Get rid of vm_pager_map_pag() and vm_pager_unmap_page(), make the functions that used to use these routines use SFBUF's instead.

Get rid of the (userland?) 4MB page mapping feature in pmap_object_init_pt() for now. The code appears to not track the page directory properly and could result in a non-zero page being freed as PG_ZERO.

This commit also includes updated code comments and some additional non-operational code cleanups.

src/sys/i386/i386/pmap.c        1.39 src/sys/kern/kern_exec.c        1.27 src/sys/kern/kern_exit.c        1.34 src/sys/kern/kern_xio.c         1.5 src/sys/kern/uipc_syscalls.c    1.35 src/sys/kern/vfs_bio.c          1.25 src/sys/sys/xio.h               1.3 src/sys/vfs/procfs/procfs_mem.c 1.9 src/sys/vm/vm_fault.c           1.14 src/sys/vm/vm_map.c             1.27 src/sys/vm/vm_mmap.c            1.20 src/sys/vm/vm_object.c          1.16 src/sys/vm/vm_page.c            1.21 src/sys/vm/vm_page.h            1.11 src/sys/vm/vm_pageout.c         1.11 src/sys/vm/vm_pager.c           1.10 src/sys/vm/vm_pager.h           1.4 src/sys/vm/vnode_pager.c        1.14

No TrackBacks

TrackBack URL:

Leave a comment

Monthly Archives


OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.3