cvs commit: src/sys/vm vm_object.c

Alan Cox alc at FreeBSD.org
Sun Feb 24 18:03:57 UTC 2008


alc         2008-02-24 18:03:57 UTC

  FreeBSD src repository

  Modified files:
    sys/vm               vm_object.c 
  Log:
  Correct a long-standing error in vm_object_deallocate().  Specifically,
  only anonymous default (OBJT_DEFAULT) and swap (OBJT_SWAP) objects should
  ever have OBJ_ONEMAPPING set.  However, vm_object_deallocate() was
  setting it on device (OBJT_DEVICE) objects.  As a result,
  vm_object_page_remove() could be called on a device object and if that
  occurred pmap_remove_all() would be called on the device object's pages.
  However, a device object's pages are fictitious, and fictitious pages do
  not have an initialized pv list (struct md_page).
  
  To date, fictitious pages have been allocated from zeroed memory,
  effectively hiding this problem.  Now, however, the conversion of rotting
  diagnostics to invariants in the amd64 and i386 pmaps has revealed the
  problem.  Specifically, assertion failures have occurred during the
  initialization phase of the X server on some hardware.
  
  MFC after: 1 week
  Discussed with: Kostik Belousov
  Reported by: Michiel Boland
  
  Revision  Changes    Path
  1.391     +4 -1      src/sys/vm/vm_object.c


More information about the cvs-src mailing list