xref: /linux-6.15/include/linux/kmsan_types.h (revision ec3e837d)
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