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/
Home Products Support Community News


[Xen-devel] [patch] unwanted sign extending

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [patch] unwanted sign extending
From: "Scott Parish" <srparish@xxxxxxxxxx>
Date: Tue, 21 Jun 2005 20:10:30 +0000
Delivery-date: Tue, 21 Jun 2005 21:00:40 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/
static int alloc_l3_table(struct pfn_info *page) 
    unsigned long  vaddr; 
    unsigned int   i; 
    for ( i = 0; i < L3_PAGETABLE_ENTRIES; i++ ) 
        vaddr = i << L3_PAGETABLE_SHIFT; 

"i" gets sign extended when its shifted, so vaddr has all its high
bits set. Because of that some l2 page_type's come out looking like
PGT_writable instead of PGT_l2. Eventually this leads to an attempt to
call put_page_type on the page twice, once when cleaning up recursively
from l4, and once from walking the raw frames list. The second
put_page_type hits the ASSERT that the type count isn't 0.

With the attached patch, i can completely run a simple "hello world"
domu, and its cleanup. Linux domu still probably doesn't work.


Scott Parish
Signed-off-by: srparish@xxxxxxxxxx

Attachment: no-sign-extension.diff
Description: Text document

Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>