git: 9front

Download patch

ref: 0b43e071cc75300cda03ea0da4deca6e16d7bb18
parent: a59ae48381027ca4096db95f6cb14ad867b82036
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Feb 1 05:17:53 EST 2014

kernel: fix pointer truncation in xspanalloc(), fix format prints

--- a/sys/src/9/port/xalloc.c
+++ b/sys/src/9/port/xalloc.c
@@ -57,6 +57,7 @@
 
 	upages = conf.upages;
 	kpages = conf.npage - upages;
+
 	pm = palloc.mem;
 	for(i=0; i<nelem(conf.mem); i++){
 		m = &conf.mem[i];
@@ -99,7 +100,7 @@
 		panic("xspanalloc: %lud %d %lux", size, align, span);
 
 	if(span > 2) {
-		v = (a + span) & ~(span-1);
+		v = (a + span) & ~((uintptr)span-1);
 		t = v - a;
 		if(t > 0)
 			xhole(PADDR(a), t);
@@ -111,7 +112,7 @@
 		v = a;
 
 	if(align > 1)
-		v = (v + align) & ~(align-1);
+		v = (v + align) & ~((uintptr)align-1);
 
 	return (void*)v;
 }
@@ -261,16 +262,17 @@
 {
 	int i;
 	Hole *h;
+	uintptr s;
 
 	i = 0;
 	for(h = xlists.flist; h; h = h->link)
 		i++;
-
 	print("%d holes free\n", i);
-	i = 0;
+
+	s = 0;
 	for(h = xlists.table; h; h = h->link) {
 		print("%#p %#p %p\n", h->addr, h->top, h->size);
-		i += h->size;
+		s += h->size;
 	}
-	print("%d bytes free\n", i);
+	print("%lld bytes free\n", (vlong)s);
 }
--