WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH] X server crashes Xen on xeno-unstable.bk

To: "Ian Pratt" <m+Ian.Pratt@xxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH] X server crashes Xen on xeno-unstable.bk
From: Leendert van Doorn <leendert@xxxxxxxxxxxxxx>
Date: Thu, 06 Jan 2005 15:18:54 -0500
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 06 Jan 2005 22:07:43 +0000
Envelope-to: xen+James.Bulpin@xxxxxxxxxxxx
In-reply-to: Your message of "Thu, 06 Jan 2005 20:37:06 GMT." <A95E2296287EAD4EB592B5DEEFCE0E9D123259@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-archive: <http://sourceforge.net/mailarchive/forum.php?forum=xen-devel>
List-help: <mailto:xen-devel-request@lists.sourceforge.net?subject=help>
List-id: List for Xen developers <xen-devel.lists.sourceforge.net>
List-post: <mailto:xen-devel@lists.sourceforge.net>
List-subscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=subscribe>
List-unsubscribe: <https://lists.sourceforge.net/lists/listinfo/xen-devel>, <mailto:xen-devel-request@lists.sourceforge.net?subject=unsubscribe>
Sender: xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx
# > 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.
# 
# Interesting. I'm guessing the reason we haven't seen this is that we
# don't build on FC3. The newer version of gcc has obviously spotted the
# opportunity to hoist the load.

The compiler I use (3.4.2) did hoist it, but not far enough. It moved
the dereference after the (l1v & _PAGE_PRESENT) condition but before
pfn_is_ram(pfn). pfn_is_ram(pfn) failed because this was video memory.

Looking through memory.c, this was the only case where page was derefenced
before pfn_is_ram() is called.

        Leendert


-------------------------------------------------------
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