« 传说中的“猴年马月”即将到来~ | Main | 打算用技术暂时麻醉一下自己 »

Matthew Dillon's most recent VM work

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

Advertise

About

This page contains a single entry from the blog posted on May 14, 2004 2:57 AM.

The previous post in this blog was 传说中的“猴年马月”即将到来~.

The next post in this blog is 打算用技术暂时麻醉一下自己.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 4.01