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

[Xen-devel] Re: about fixup_page_fault

On 17/12/2008 03:17, "Tian, Kevin" <kevin.tian@xxxxxxxxx> wrote:

> I guess I may miss sth important, but I don't understand below
> code at end of fixup_page_fault:
>     if ( paging_mode_enabled(d) )
>     {
>         int ret = paging_fault(addr, regs);
>         if ( ret == EXCRET_fault_fixed )
>             trace_trap_two_addr(TRC_PV_PAGING_FIXUP, regs->eip, addr);
>         return ret;
>     }
> Shouldn't a check upon guest_mode(regs) is required, since the
> fault may be triggered by xen itself? For example, a null pointer
> deference by xen code (not passed from guest) may not get chance
> to reach "fatal page fault" and instead a guest page fault could be
> injected per my reading...

Consider copy_from_guest() applied to a PV guest with dirty logging enabled.
The #PF handler should fix up faults when accessing guest address space via
shadow page tables, even when the access happens within Xen.

I haven't looked but I'm sure that the shadow code will only propagate the
fault, and return EXCRET_fault_fixed, if it sees the fault occurred in guest

 -- Keir

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.