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 ...

Matthew Dillon dillon at crater.dragonflybsd.org
Thu May 13 10:41:12 PDT 2004


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





More information about the Commits mailing list