|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-devel] [PATCH] X server crashes Xen on xeno-unstable.bk,
Leendert van Doorn <=
|
|
|
|
|