DragonFly kernel List (threaded) for 2007-02
DragonFly BSD
DragonFly kernel List (threaded) for 2007-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Page fault handling in vpagetable area clarification


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 12 Feb 2007 08:53:04 -0800 (PST)

:Right, but that's the read fault on writable page case. My question was about 
:a _write_ fault on writable page. The way I'm reading the code, the host 
:kernel again maps the page read only (vm_fault_object() clears the write bit 
:from fs.prot, so after return to vm_fault(), pmap_enter() will map the page 
:read only. However, since this is a _write_ fault, vm_fault_vpagetable() has 
:already set VPTE_M in the vpagetable. Therefore, the real kernel doesn't have 
:to worry about the modified bit (it's already set in the vpagetable, that's 
:enough, right?). So I don't see why the page can't be mapped RW.
:
:Aggelos

    The write bit should not be cleared from fs.prot in that case.  Check
    the conditionals on fault_type in vm_fault_object().

    case 1:  line 751 vm/vm_fault.c (in HEAD).  

	VM_PROT_WRITE is only cleared if fault_type was not a write fault

    case 2:  line 1238 vm/vm_fault.c (in HEAD).

	VM_PROT_WRITE is only cleared in the 'else' portion of a conditional
	that tested whether fault_type was VM_PROT_WRITE (so again it is
	only cleared if the fault_type was not a write fault).

    If I'm looking in the wrong place I'll need a file & line number to
    review.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]