|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [patch] unwanted sign extending
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@xxxxxxxxxx
no-sign-extension.diff
Description: Text document
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [patch] unwanted sign extending,
Scott Parish <=
|
|
|
|
|