cvs commit: src/sys/vm memguard.c

Alfred Perlstein alfred at freebsd.org
Tue Feb 15 22:40:18 GMT 2005


Where can I read more about this feature? :)

* Bosko Milekic <bmilekic at FreeBSD.org> [050215 14:17] wrote:
> bmilekic    2005-02-15 22:17:07 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/vm               memguard.c 
>   Log:
>   Rather than overloading the page->object field like UMA does, use instead
>   an unused pageq queue reference in the page structure to stash a pointer
>   to the MemGuard FIFO.  Using the page->object field caused problems
>   because when vm_map_protect() was called the second time to set
>   VM_PROT_DEFAULT back onto a set of pages in memguard_map, the protection
>   in the VM would be changed but the PMAP code would lazily not restore
>   the PG_RW bit on the underlying pages right away (see pmap_protect()).
>   So when a page fault finally occured and the VM noticed the faulting
>   address corresponds to a page that _does_ have write access now, it
>   would then call into PMAP to set back PG_RW (i386 case being discussed
>   here).  However, before it got to do that, an assertion on the object
>   lock not being owned would get triggered, as the object of the faulting
>   page would need to be locked but was overloaded by MemGuard.  This is
>   precisely why MemGuard cannot overload page->object.
>   
>   Submitted by: Alan Cox (alc@)
>   
>   Revision  Changes    Path
>   1.4       +13 -17    src/sys/vm/memguard.c

-- 
- Alfred Perlstein
- Research Engineering Development Inc.
- email: bright at mu.org cell: 408-480-4684


More information about the cvs-src mailing list