Module Name:    src
Committed By:   maxv
Date:           Wed Aug 22 12:42:06 UTC 2018

Modified Files:
        src/sys/kern: kern_malloc.c
        src/sys/sys: asan.h

Log Message:
Add back the KASAN ifdefs in kern_malloc until we sort out the type issue,
and fix sys/asan.h. Tested on i386, amd64 and amd64-kasan.


To generate a diff of this commit:
cvs rdiff -u -r1.151 -r1.152 src/sys/kern/kern_malloc.c
cvs rdiff -u -r1.5 -r1.6 src/sys/sys/asan.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_malloc.c
diff -u src/sys/kern/kern_malloc.c:1.151 src/sys/kern/kern_malloc.c:1.152
--- src/sys/kern/kern_malloc.c:1.151	Wed Aug 22 09:38:21 2018
+++ src/sys/kern/kern_malloc.c	Wed Aug 22 12:42:06 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_malloc.c,v 1.151 2018/08/22 09:38:21 maxv Exp $	*/
+/*	$NetBSD: kern_malloc.c,v 1.152 2018/08/22 12:42:06 maxv Exp $	*/
 
 /*
  * Copyright (c) 1987, 1991, 1993
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.151 2018/08/22 09:38:21 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.152 2018/08/22 12:42:06 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_kasan.h"
@@ -108,12 +108,16 @@ void *
 kern_malloc(unsigned long size, int flags)
 {
 	const int kmflags = (flags & M_NOWAIT) ? KM_NOSLEEP : KM_SLEEP;
+#ifdef KASAN
 	const size_t origsize = size;
+#endif
 	size_t allocsize, hdroffset;
 	struct malloc_header *mh;
 	void *p;
 
+#ifdef KASAN
 	kasan_add_redzone(&size);
+#endif
 
 	if (size >= PAGE_SIZE) {
 		if (size > (ULONG_MAX-PAGE_SIZE))
@@ -140,7 +144,9 @@ kern_malloc(unsigned long size, int flag
 #endif
 	mh++;
 
+#ifdef KASAN
 	kasan_alloc(mh, origsize, size);
+#endif
 
 	return mh;
 }
@@ -153,7 +159,9 @@ kern_free(void *addr)
 	mh = addr;
 	mh--;
 
+#ifdef KASAN
 	kasan_free(addr, mh->mh_size);
+#endif
 
 	if (mh->mh_size >= PAGE_SIZE + sizeof(struct malloc_header))
 		kmem_intr_free((char *)addr - PAGE_SIZE,

Index: src/sys/sys/asan.h
diff -u src/sys/sys/asan.h:1.5 src/sys/sys/asan.h:1.6
--- src/sys/sys/asan.h:1.5	Wed Aug 22 12:14:29 2018
+++ src/sys/sys/asan.h	Wed Aug 22 12:42:06 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: asan.h,v 1.5 2018/08/22 12:14:29 kre Exp $	*/
+/*	$NetBSD: asan.h,v 1.6 2018/08/22 12:42:06 maxv Exp $	*/
 
 /*
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -39,31 +39,24 @@ void kasan_add_redzone(size_t *);
 void kasan_alloc(const void *, size_t, size_t);
 void kasan_free(const void *, size_t);
 #else
-#if 0
-/* there are type issues - kmem_alloc() takes a u_long size not size_t */
-static void __inline __unused
+__inline static void __unused
 kasan_add_redzone(size_t *size __unused)
 {
 	/* nothing */
 }
 
-static void __inline __unused
+__inline static void __unused
 kasan_alloc(const void *addr __unused, size_t size __unused,
     size_t sz_with_redz __unused)
 {
 	/* nothing */
 }
 
-static void __inline __unused
+__inline static void __unused
 kasan_free(const void *addr __unused, size_t sz_with_redz __unused)
 {
 	/* nothing */
 }
-#else
-#define	kasan_add_redzone(SP)	__nothing
-#define	kasan_alloc(P, S1, S2)	__nothing
-#define	kasan_free(P, S)	__nothing
-#endif
 #endif
 
 #endif /* !_SYS_ASAN_H_ */

Reply via email to