DragonFly commits List (threaded) for 2004-05
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
cvs commit: src/sys/i386/i386 pmap.c src/sys/kern kern_exec.c kern_exit.c kern_xio.c uipc_syscalls.c vfs_bio.c src/sys/sys xio.h src/sys/vfs/procfs procfs_mem.c src/sys/vm vm_fault.c vm_map.c vm_mmap.c vm_object.c vm_page.c vm_page.h vm_pageout.c vm_pager.c ...
dillon 2004/05/13 10:40:19 PDT
DragonFly src repository
Modified files:
sys/i386/i386 pmap.c
sys/kern kern_exec.c kern_exit.c kern_xio.c
uipc_syscalls.c vfs_bio.c
sys/sys xio.h
sys/vfs/procfs procfs_mem.c
sys/vm vm_fault.c vm_map.c vm_mmap.c vm_object.c
vm_page.c vm_page.h vm_pageout.c
vm_pager.c vm_pager.h vnode_pager.c
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.
Revision Changes Path
1.39 +88 -34 src/sys/i386/i386/pmap.c
1.27 +32 -18 src/sys/kern/kern_exec.c
1.34 +2 -0 src/sys/kern/kern_exit.c
1.5 +27 -0 src/sys/kern/kern_xio.c
1.35 +11 -12 src/sys/kern/uipc_syscalls.c
1.25 +39 -8 src/sys/kern/vfs_bio.c
1.3 +1 -0 src/sys/sys/xio.h
1.9 +37 -48 src/sys/vfs/procfs/procfs_mem.c
1.14 +45 -14 src/sys/vm/vm_fault.c
1.27 +30 -5 src/sys/vm/vm_map.c
1.20 +13 -5 src/sys/vm/vm_mmap.c
1.16 +98 -21 src/sys/vm/vm_object.c
1.21 +33 -32 src/sys/vm/vm_page.c
1.11 +30 -22 src/sys/vm/vm_page.h
1.11 +67 -56 src/sys/vm/vm_pageout.c
1.10 +0 -17 src/sys/vm/vm_pager.c
1.4 +0 -4 src/sys/vm/vm_pager.h
1.14 +13 -6 src/sys/vm/vnode_pager.c
http://www.dragonflybsd.org/cvsweb/src/sys/i386/i386/pmap.c.diff?r1=1.38&r2=1.39&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_exec.c.diff?r1=1.26&r2=1.27&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_exit.c.diff?r1=1.33&r2=1.34&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_xio.c.diff?r1=1.4&r2=1.5&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_syscalls.c.diff?r1=1.34&r2=1.35&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_bio.c.diff?r1=1.24&r2=1.25&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/sys/xio.h.diff?r1=1.2&r2=1.3&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_mem.c.diff?r1=1.8&r2=1.9&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_fault.c.diff?r1=1.13&r2=1.14&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_map.c.diff?r1=1.26&r2=1.27&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_mmap.c.diff?r1=1.19&r2=1.20&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_object.c.diff?r1=1.15&r2=1.16&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_page.c.diff?r1=1.20&r2=1.21&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_page.h.diff?r1=1.10&r2=1.11&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_pageout.c.diff?r1=1.10&r2=1.11&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_pager.c.diff?r1=1.9&r2=1.10&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_pager.h.diff?r1=1.3&r2=1.4&f=h
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vnode_pager.c.diff?r1=1.13&r2=1.14&f=h
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]