diff --git a/src/lib9/malloc.c b/src/lib9/malloc.c
index 7c5b178..2c6731e 100644
--- a/src/lib9/malloc.c
+++ b/src/lib9/malloc.c
@@ -1,58 +1,41 @@
+/*
+ * These are here mainly so that I can link against
+ * debugmalloc.c instead and not recompile the world.
+ */
+
 #include <u.h>
 #define NOPLAN9DEFINES
 #include <libc.h>
 
-/*
- * The Unix libc routines cannot be trusted to do their own locking.
- * Sad but apparently true.
- */
-
-static Lock malloclock;
-
 void*
 p9malloc(ulong n)
 {
 	void *v;
+
 	if(n == 0)
 		n++;
-//fprint(2, "%s %d malloc\n", argv0, getpid());
-	lock(&malloclock);
-	v = malloc(n);
-	unlock(&malloclock);
-//fprint(2, "%s %d donemalloc\n", argv0, getpid());
-	return v;
+	return malloc(n);
 }
 
 void
 p9free(void *v)
 {
-//fprint(2, "%s %d free\n", argv0, getpid());
-	lock(&malloclock);
+	if(v == nil)
+		return;
 	free(v);
-	unlock(&malloclock);
-//fprint(2, "%s %d donefree\n", argv0, getpid());
 }
 
 void*
 p9calloc(ulong a, ulong b)
 {
-	void *v;
+	if(a*b == 0)
+		a = b = 1;
 
-//fprint(2, "%s %d calloc\n", argv0, getpid());
-	lock(&malloclock);
-	v = calloc(a, b);
-	unlock(&malloclock);
-//fprint(2, "%s %d donecalloc\n", argv0, getpid());
-	return v;
+	return calloc(a*b, 1);
 }
 
 void*
 p9realloc(void *v, ulong n)
 {
-//fprint(2, "%s %d realloc\n", argv0, getpid());
-	lock(&malloclock);
-	v = realloc(v, n);
-	unlock(&malloclock);
-//fprint(2, "%s %d donerealloc\n", argv0, getpid());
-	return v;
+	return realloc(v, n);
 }
