[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] X server crashes Xen on xeno-unstable.bk
[My platform is a VMX machine, but this is a generic problem in xeno-unstable.bk. I use FC3 as a base and some onboard graphics controller chipset] Starting an X server on xeno-unstable.bk causes Xen to crash with a page fault generated in Xen. It turns out that the fault is generated by put_page_from_l1e(). The culprit is the following dereference: struct domain *e = page->u.inuse.domain; Where the value of page is undefined if the condition if ( !(l1v & _PAGE_PRESENT) || !pfn_is_ram(pfn) ) does hold. Unfortunately, this condition is checked after the dereference. The fix is straightforward, move the dereference after the condition test. Leendert --- xeno-unstable.bk/xen/arch/x86/memory.c.orig 2005-01-06 14:19:33.000000000 -0500 +++ xeno-unstable.bk/xen/arch/x86/memory.c 2005-01-06 15:02:54.000000000 -0500 @@ -467,11 +467,12 @@ unsigned long l1v = l1_pgentry_val(l1e); unsigned long pfn = l1_pgentry_to_pagenr(l1e); struct pfn_info *page = &frame_table[pfn]; - struct domain *e = page->u.inuse.domain; + struct domain *e; if ( !(l1v & _PAGE_PRESENT) || !pfn_is_ram(pfn) ) return; + e = page->u.inuse.domain; if ( unlikely(e != d) ) { /* ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |