All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] unwanted sign extending
@ 2005-06-21 20:10 Scott Parish
  2005-06-22  7:14 ` Jan Beulich
  0 siblings, 1 reply; 3+ messages in thread
From: Scott Parish @ 2005-06-21 20:10 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 826 bytes --]


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.

sRp

-- 
Scott Parish
Signed-off-by: srparish@us.ibm.com

[-- Attachment #2: no-sign-extension.diff --]
[-- Type: text/plain, Size: 394 bytes --]

--- old-xen-build/xen/arch/x86/mm.c	2005-06-14 15:55:34.000000000 +0000
+++ new-xen-build/xen/arch/x86/mm.c	2005-06-21 20:35:09.000000000 +0000
@@ -814,7 +814,7 @@ static int alloc_l3_table(struct pfn_inf
     unsigned long  pfn = page_to_pfn(page);
     unsigned long  vaddr;
     l3_pgentry_t  *pl3e;
-    int            i;
+    unsigned int   i;
 
     ASSERT(!shadow_mode_refcounts(d));
 


[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-06-22 11:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-21 20:10 [patch] unwanted sign extending Scott Parish
2005-06-22  7:14 ` Jan Beulich
2005-06-22 11:20   ` Scott Parish

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.