Merge tag 'drm-fixes-2024-06-22' of https://gitlab.freedesktop.org/drm/kernel
[linux-2.6-block.git] / include / linux / kmsan_types.h
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         bool allow_reporting;
35 };
36
37 #endif /* _LINUX_KMSAN_TYPES_H */