Module Name:    src
Committed By:   maxv
Date:           Sun Sep 22 10:35:13 UTC 2019

Modified Files:
        src/sys/arch/amd64/include: types.h
        src/sys/kern: subr_asan.c
        src/sys/sys: bus_proto.h

Log Message:
Fix KASAN on aarch64: the bus_space_* functions are macros, so we can't
redefine them. Introduce __HAVE_KASAN_INSTR_BUS, which indicates whether
to instrument the bus functions. Defined on amd64 only.


To generate a diff of this commit:
cvs rdiff -u -r1.60 -r1.61 src/sys/arch/amd64/include/types.h
cvs rdiff -u -r1.13 -r1.14 src/sys/kern/subr_asan.c
cvs rdiff -u -r1.8 -r1.9 src/sys/sys/bus_proto.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/arch/amd64/include/types.h
diff -u src/sys/arch/amd64/include/types.h:1.60 src/sys/arch/amd64/include/types.h:1.61
--- src/sys/arch/amd64/include/types.h:1.60	Sat Apr  6 03:06:24 2019
+++ src/sys/arch/amd64/include/types.h	Sun Sep 22 10:35:12 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: types.h,v 1.60 2019/04/06 03:06:24 thorpej Exp $	*/
+/*	$NetBSD: types.h,v 1.61 2019/09/22 10:35:12 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -103,6 +103,9 @@ typedef	unsigned char		__cpu_simple_lock
 
 #include "opt_xen.h"
 #include "opt_kasan.h"
+#ifdef KASAN
+#define __HAVE_KASAN_INSTR_BUS
+#endif
 #if defined(__x86_64__) && !defined(XENPV)
 #if !defined(KASAN)
 #define	__HAVE_PCPU_AREA 1

Index: src/sys/kern/subr_asan.c
diff -u src/sys/kern/subr_asan.c:1.13 src/sys/kern/subr_asan.c:1.14
--- src/sys/kern/subr_asan.c:1.13	Sat Sep  7 10:24:01 2019
+++ src/sys/kern/subr_asan.c	Sun Sep 22 10:35:12 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_asan.c,v 1.13 2019/09/07 10:24:01 maxv Exp $	*/
+/*	$NetBSD: subr_asan.c,v 1.14 2019/09/22 10:35:12 maxv Exp $	*/
 
 /*
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_asan.c,v 1.13 2019/09/07 10:24:01 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_asan.c,v 1.14 2019/09/22 10:35:12 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -781,6 +781,8 @@ ASAN_ATOMIC_FUNC_INC(ptr, void *, void);
 
 /* -------------------------------------------------------------------------- */
 
+#ifdef __HAVE_KASAN_INSTR_BUS
+
 #include <sys/bus.h>
 
 #undef bus_space_read_multi_1
@@ -926,6 +928,8 @@ ASAN_BUS_WRITE_FUNC(2, 16)
 ASAN_BUS_WRITE_FUNC(4, 32)
 ASAN_BUS_WRITE_FUNC(8, 64)
 
+#endif /* __HAVE_KASAN_INSTR_BUS */
+
 /* -------------------------------------------------------------------------- */
 
 void __asan_register_globals(struct __asan_global *, size_t);

Index: src/sys/sys/bus_proto.h
diff -u src/sys/sys/bus_proto.h:1.8 src/sys/sys/bus_proto.h:1.9
--- src/sys/sys/bus_proto.h:1.8	Sat Sep  7 10:24:01 2019
+++ src/sys/sys/bus_proto.h	Sun Sep 22 10:35:12 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_proto.h,v 1.8 2019/09/07 10:24:01 maxv Exp $	*/
+/*	$NetBSD: bus_proto.h,v 1.9 2019/09/22 10:35:12 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2001, 2007 The NetBSD Foundation, Inc.
@@ -132,7 +132,7 @@ uint64_t bus_space_read_8(bus_space_tag_
 uint64_t bus_space_read_stream_8(bus_space_tag_t, bus_space_handle_t,
 				 bus_size_t);
 
-#ifdef KASAN
+#if defined(KASAN) && defined(__HAVE_KASAN_INSTR_BUS)
 #define BUS_SPACE_READ_MEM_PROTOS(bytes, bits)					\
 void kasan_bus_space_read_multi_##bytes(bus_space_tag_t, bus_space_handle_t,	\
     bus_size_t, uint##bits##_t *, bus_size_t);					\
@@ -195,7 +195,7 @@ void	bus_space_write_8(bus_space_tag_t, 
 void	bus_space_write_stream_8(bus_space_tag_t, bus_space_handle_t,
 		  		 bus_size_t, uint64_t);
 
-#ifdef KASAN
+#if defined(KASAN) && defined(__HAVE_KASAN_INSTR_BUS)
 #define BUS_SPACE_WRITE_MEM_PROTOS(bytes, bits)					\
 void kasan_bus_space_write_multi_##bytes(bus_space_tag_t, bus_space_handle_t,	\
     bus_size_t, const uint##bits##_t *, bus_size_t);				\

Reply via email to