1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * A minimal header declaring types added by KMSAN to existing kernel structs. 4 * 5 * Copyright (C) 2017-2022 Google LLC 6 * Author: Alexander Potapenko <glider@google.com> 7 * 8 */ 9 #ifndef _LINUX_KMSAN_TYPES_H 10 #define _LINUX_KMSAN_TYPES_H 11 12 #include <linux/types.h> 13 14 /* These constants are defined in the MSan LLVM instrumentation pass. */ 15 #define KMSAN_RETVAL_SIZE 800 16 #define KMSAN_PARAM_SIZE 800 17 18 struct kmsan_context_state { 19 char param_tls[KMSAN_PARAM_SIZE]; 20 char retval_tls[KMSAN_RETVAL_SIZE]; 21 char va_arg_tls[KMSAN_PARAM_SIZE]; 22 char va_arg_origin_tls[KMSAN_PARAM_SIZE]; 23 u64 va_arg_overflow_size_tls; 24 char param_origin_tls[KMSAN_PARAM_SIZE]; 25 u32 retval_origin_tls; 26 }; 27 28 #undef KMSAN_PARAM_SIZE 29 #undef KMSAN_RETVAL_SIZE 30 31 struct kmsan_ctx { 32 struct kmsan_context_state cstate; 33 int kmsan_in_runtime; 34 unsigned int depth; 35 }; 36 37 #endif /* _LINUX_KMSAN_TYPES_H */ 38