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); \