1*1d171f95SJens Wiklander /* 2*1d171f95SJens Wiklander * Copyright (c) 2016, Linaro Limited 3*1d171f95SJens Wiklander * All rights reserved. 4*1d171f95SJens Wiklander * 5*1d171f95SJens Wiklander * Redistribution and use in source and binary forms, with or without 6*1d171f95SJens Wiklander * modification, are permitted provided that the following conditions are met: 7*1d171f95SJens Wiklander * 8*1d171f95SJens Wiklander * 1. Redistributions of source code must retain the above copyright notice, 9*1d171f95SJens Wiklander * this list of conditions and the following disclaimer. 10*1d171f95SJens Wiklander * 11*1d171f95SJens Wiklander * 2. Redistributions in binary form must reproduce the above copyright notice, 12*1d171f95SJens Wiklander * this list of conditions and the following disclaimer in the documentation 13*1d171f95SJens Wiklander * and/or other materials provided with the distribution. 14*1d171f95SJens Wiklander * 15*1d171f95SJens Wiklander * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16*1d171f95SJens Wiklander * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*1d171f95SJens Wiklander * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*1d171f95SJens Wiklander * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 19*1d171f95SJens Wiklander * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*1d171f95SJens Wiklander * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*1d171f95SJens Wiklander * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*1d171f95SJens Wiklander * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*1d171f95SJens Wiklander * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*1d171f95SJens Wiklander * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*1d171f95SJens Wiklander * POSSIBILITY OF SUCH DAMAGE. 26*1d171f95SJens Wiklander */ 27*1d171f95SJens Wiklander #ifndef __KERNEL_ASAN_H 28*1d171f95SJens Wiklander #define __KERNEL_ASAN_H 29*1d171f95SJens Wiklander 30*1d171f95SJens Wiklander 31*1d171f95SJens Wiklander #define ASAN_DATA_RED_ZONE -1 32*1d171f95SJens Wiklander #define ASAN_HEAP_RED_ZONE -2 33*1d171f95SJens Wiklander 34*1d171f95SJens Wiklander #define ASAN_BLOCK_SIZE 8 35*1d171f95SJens Wiklander #define ASAN_BLOCK_SHIFT 3 36*1d171f95SJens Wiklander #define ASAN_BLOCK_MASK (ASAN_BLOCK_SIZE - 1) 37*1d171f95SJens Wiklander 38*1d171f95SJens Wiklander #ifndef ASM 39*1d171f95SJens Wiklander #include <types_ext.h> 40*1d171f95SJens Wiklander 41*1d171f95SJens Wiklander void asan_set_shadowed(void *va_begin, void *va_end); 42*1d171f95SJens Wiklander void asan_start(void); 43*1d171f95SJens Wiklander 44*1d171f95SJens Wiklander #ifdef CFG_CORE_SANITIZE_KADDRESS 45*1d171f95SJens Wiklander void asan_tag_no_access(void *begin, void *end); 46*1d171f95SJens Wiklander void asan_tag_access(void *begin, void *end); 47*1d171f95SJens Wiklander void asan_tag_heap_free(void *begin, void *end); 48*1d171f95SJens Wiklander #else 49*1d171f95SJens Wiklander static inline void asan_tag_no_access(void *begin __unused, void *end __unused) 50*1d171f95SJens Wiklander { 51*1d171f95SJens Wiklander } 52*1d171f95SJens Wiklander static inline void asan_tag_access(void *begin __unused, void *end __unused) 53*1d171f95SJens Wiklander { 54*1d171f95SJens Wiklander } 55*1d171f95SJens Wiklander static inline void asan_tag_heap_free(void *begin __unused, void *end __unused) 56*1d171f95SJens Wiklander { 57*1d171f95SJens Wiklander } 58*1d171f95SJens Wiklander #endif 59*1d171f95SJens Wiklander 60*1d171f95SJens Wiklander #endif /*ASM*/ 61*1d171f95SJens Wiklander #endif /*__KERNEL_ASAN_H*/ 62