From d1ff0dba241643c5daf6a755af0d384058b90898 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 25 Apr 2002 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2002-04-25 --- pc/trap.c | 4 ++++ port/alloc.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pc/trap.c b/pc/trap.c index c8d2bccd21f79faf99315ada6f736066f74aab97..a3f103f8c1565b4ff369d94294e5d2ac7adb75b9 100644 --- a/pc/trap.c +++ b/pc/trap.c @@ -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; diff --git a/port/alloc.c b/port/alloc.c index 36246894d02c053efadcfb729ea8b5facd6f4550..9eadefa17eb314e8adbc02869108c2a45e12b318 100644 --- a/port/alloc.c +++ b/port/alloc.c @@ -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; }