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