M pc/trap.c => pc/trap.c +4 -0
@@ 537,6 537,10 @@ syscall(Ureg* ureg)
if((ureg->cs & 0xFFFF) != UESEL)
panic("syscall: cs 0x%4.4luX\n", ureg->cs);
+ /* check syscall has an empty kernel stack */
+ if(up->kstack + KSTACK - (char*)ureg > 512)
+ panic("syscall: stack %ld\n", up->kstack + KSTACK - (char*)ureg);
+
m->syscall++;
up->insyscall = 1;
up->pc = ureg->pc;
M port/alloc.c => port/alloc.c +4 -2
@@ 189,12 189,14 @@ malloc(ulong size)
void *v;
v = poolalloc(mainmem, size+Npadlong*sizeof(ulong));
- if(Npadlong && v != nil) {
+ if(v == nil)
+ return nil;
+ if(Npadlong){
v = (ulong*)v+Npadlong;
setmalloctag(v, getcallerpc(&size));
setrealloctag(v, 0);
- memset(v, 0, size);
}
+ memset(v, 0, size);
return v;
}