git: 640e5cb30405 - main - kmsan: Add a comment explaining why KMSAN doesn't shadow above KERNBASE
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 27 Jul 2023 20:12:57 UTC
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=640e5cb30405e98d3888b22bb040485e8bf3b446 commit 640e5cb30405e98d3888b22bb040485e8bf3b446 Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2023-07-15 18:04:55 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2023-07-27 20:01:58 +0000 kmsan: Add a comment explaining why KMSAN doesn't shadow above KERNBASE Sponsored by: The FreeBSD Foundation --- sys/amd64/include/msan.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sys/amd64/include/msan.h b/sys/amd64/include/msan.h index 56460575ea7e..b62b3c243505 100644 --- a/sys/amd64/include/msan.h +++ b/sys/amd64/include/msan.h @@ -41,8 +41,9 @@ typedef uint32_t msan_orig_t; /* - * Our 32-bit origin cells encode a 2-bit type and 30-bit pointer. The pointer - * is compressed by making it a positive offset relative to KERNBASE. + * Our 32-bit origin cells encode a 2-bit type and 30-bit pointer to a kernel + * instruction. The pointer is compressed by making it a positive offset + * relative to KERNBASE. */ #define KMSAN_ORIG_TYPE_SHIFT 30u #define KMSAN_ORIG_PTR_MASK ((1u << KMSAN_ORIG_TYPE_SHIFT) - 1) @@ -76,6 +77,12 @@ kmsan_md_addr_to_orig(vm_offset_t addr) static inline bool kmsan_md_unsupported(vm_offset_t addr) { + /* + * The kernel itself isn't shadowed: for most purposes global variables + * are always initialized, and because KMSAN kernels are large + * (GENERIC-KMSAN is ~80MB at the time of writing), shadowing would + * incur signficant memory usage. + */ return (addr < VM_MIN_KERNEL_ADDRESS || addr >= KERNBASE); }