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