Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.
This commit is contained in:
parent
399122feeb
commit
cfd4dc8f38
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: Makefile.rump,v 1.3 2007/08/07 21:33:13 pooka Exp $
|
# $NetBSD: Makefile.rump,v 1.4 2007/08/15 22:13:15 pooka Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
.include <bsd.own.mk>
|
||||||
|
@ -20,4 +20,6 @@ CPPFLAGS+= -D_KERNEL -DDIAGNOSTIC -I${NETBSDSRCDIR}/common/include
|
||||||
CPPFLAGS+= -nostdinc -I${NETBSDSRCDIR}/sys
|
CPPFLAGS+= -nostdinc -I${NETBSDSRCDIR}/sys
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
LDFLAGS+= -Wl,--wrap=malloc
|
||||||
|
|
||||||
LIBRUMPDIR != cd ${NETBSDSRCDIR}/sys/rump/librump/rumpkern && ${PRINTOBJDIR}
|
LIBRUMPDIR != cd ${NETBSDSRCDIR}/sys/rump/librump/rumpkern && ${PRINTOBJDIR}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: emul.c,v 1.8 2007/08/14 13:54:15 pooka Exp $ */
|
/* $NetBSD: emul.c,v 1.9 2007/08/15 22:13:15 pooka Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
|
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
|
||||||
|
@ -27,6 +27,8 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define malloc(a,b,c) __wrap_malloc(a,b,c)
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/malloc.h>
|
#include <sys/malloc.h>
|
||||||
#include <sys/null.h>
|
#include <sys/null.h>
|
||||||
|
@ -243,6 +245,18 @@ malloc_type_detach(struct malloc_type *type)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
__wrap_malloc(unsigned long size, struct malloc_type *type, int flags)
|
||||||
|
{
|
||||||
|
void *rv;
|
||||||
|
|
||||||
|
rv = rumpuser_malloc(size, flags * (M_CANFAIL | M_NOWAIT));
|
||||||
|
if (rv && flags & M_ZERO)
|
||||||
|
memset(rv, 0, size);
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nanotime(struct timespec *ts)
|
nanotime(struct timespec *ts)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
# $NetBSD: Makefile,v 1.2 2007/08/07 20:39:54 pooka Exp $
|
# $NetBSD: Makefile,v 1.3 2007/08/15 22:13:16 pooka Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
LIB= rumpuser
|
LIB= rumpuser
|
||||||
|
|
||||||
SRCS= rumpuser.c
|
SRCS= rumpuser.c
|
||||||
|
|
||||||
NOPIC= # defined
|
RUMPKERNEL= no
|
||||||
MKLINT= no
|
|
||||||
MKPROFILE= no
|
|
||||||
WARNS= 4
|
|
||||||
DBG= -O0 -g
|
|
||||||
|
|
||||||
|
.include "${NETBSDSRCDIR}/sys/rump/Makefile.rump"
|
||||||
.include <bsd.lib.mk>
|
.include <bsd.lib.mk>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: rumpuser.c,v 1.4 2007/08/07 20:40:53 pooka Exp $ */
|
/* $NetBSD: rumpuser.c,v 1.5 2007/08/15 22:13:16 pooka Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
|
* Copyright (c) 2007 Antti Kantee. All Rights Reserved.
|
||||||
|
@ -27,6 +27,8 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define malloc(a) __real_malloc(a)
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -36,6 +38,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "rumpuser.h"
|
#include "rumpuser.h"
|
||||||
|
@ -76,6 +79,9 @@ _rumpuser_malloc(size_t howmuch, int canfail, const char *func, int line)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rv)
|
||||||
|
memset(rv, 0, howmuch);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue