KMSAN: detector of uninitialized values use

modulename: kmsan_shadow.ko

configname: CONFIG_KMSAN

Linux Kernel Configuration
└─>Kernel hacking
└─>Memory Debugging
└─>KASAN: dynamic memory safety error detector
└─>KCSAN: dynamic data race detector
└─>KMSAN: detector of uninitialized values use
In linux kernel since version 4.14.326 (release Date: 2023-09-23)  
KernelMemorySanitizer (KMSAN) is a dynamic detector of uses of
uninitialized values in the kernel. It is based on compiler
instrumentation provided by Clang and thus requires Clang to build.

An important note is that KMSAN is not intended for production use,
because it drastically increases kernel memory footprint and slows
the whole system down.

See Documentation/dev-tools/kmsan.rst for more details.

source code:


is selected by
CONFIG_CRYPTO_AES_NI_INTEL
CONFIG_CRYPTO_BLOWFISH_X86_64
CONFIG_CRYPTO_CAMELLIA_X86_64
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
CONFIG_CRYPTO_CAST5_AVX_X86_64
CONFIG_CRYPTO_CAST6_AVX_X86_64
CONFIG_CRYPTO_DES3_EDE_X86_64
CONFIG_CRYPTO_SERPENT_SSE2_X86_64
CONFIG_CRYPTO_SERPENT_SSE2_586
CONFIG_CRYPTO_SERPENT_AVX_X86_64
CONFIG_CRYPTO_SERPENT_AVX2_X86_64
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY
CONFIG_CRYPTO_TWOFISH_AVX_X86_64
CONFIG_CRYPTO_CHACHA20_X86_64
CONFIG_CRYPTO_POLY1305_X86_64
CONFIG_CRYPTO_SHA1_SSSE3
CONFIG_CRYPTO_SHA256_SSSE3
CONFIG_CRYPTO_SHA512_SSSE3
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL
CONFIG_CRYPTO_CRC32C_INTEL
CONFIG_CRYPTO_CRC32_PCLMUL
CONFIG_CRYPTO_CRCT10DIF_PCLMUL
CONFIG_CRYPTO_SHA1_ARM
CONFIG_CRYPTO_AES_ARM
CONFIG_CRYPTO_AES_ARM_BS
CONFIG_CRYPTO_MD5_OCTEON
CONFIG_CRYPTO_SHA1_OCTEON
CONFIG_CRYPTO_SHA256_OCTEON
CONFIG_CRYPTO_SHA512_OCTEON
CONFIG_CRYPTO_CRC32C_VPMSUM
CONFIG_CRYPTO_CRCT10DIF_VPMSUM
CONFIG_CRYPTO_MD5_PPC
CONFIG_CRYPTO_SHA256_PPC_SPE
CONFIG_CRYPTO_AES_PPC_SPE
CONFIG_CRYPTO_CRC32_S390
CONFIG_CRYPTO_SHA512_S390
CONFIG_CRYPTO_SHA1_S390
CONFIG_CRYPTO_SHA256_S390
CONFIG_CRYPTO_GHASH_S390
CONFIG_CRYPTO_AES_S390
CONFIG_CRYPTO_DES_S390
CONFIG_CRYPTO_DES_SPARC64
CONFIG_CRYPTO_CRC32C_SPARC64
CONFIG_CRYPTO_MD5_SPARC64
CONFIG_CRYPTO_SHA1_SPARC64
CONFIG_CRYPTO_SHA256_SPARC64
CONFIG_CRYPTO_SHA512_SPARC64
CONFIG_CRYPTO_AES_SPARC64
CONFIG_CRYPTO_CAMELLIA_SPARC64
CONFIG_CRYPTO_CURVE25519_X86
CONFIG_CRYPTO_AES_NI_INTEL
CONFIG_CRYPTO_BLOWFISH_X86_64
CONFIG_CRYPTO_CAMELLIA_X86_64
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
CONFIG_CRYPTO_CAST5_AVX_X86_64
CONFIG_CRYPTO_CAST6_AVX_X86_64
CONFIG_CRYPTO_DES3_EDE_X86_64
CONFIG_CRYPTO_SERPENT_SSE2_X86_64
CONFIG_CRYPTO_SERPENT_SSE2_586
CONFIG_CRYPTO_SERPENT_AVX_X86_64
CONFIG_CRYPTO_SERPENT_AVX2_X86_64
CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64
CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY
CONFIG_CRYPTO_TWOFISH_AVX_X86_64
CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64
CONFIG_CRYPTO_CHACHA20_X86_64
CONFIG_CRYPTO_AEGIS128_AESNI_SSE2
CONFIG_CRYPTO_NHPOLY1305_SSE2
CONFIG_CRYPTO_NHPOLY1305_AVX2
CONFIG_CRYPTO_BLAKE2S_X86
CONFIG_CRYPTO_POLYVAL_CLMUL_NI
CONFIG_CRYPTO_POLY1305_X86_64
CONFIG_CRYPTO_SHA1_SSSE3
CONFIG_CRYPTO_SHA256_SSSE3
CONFIG_CRYPTO_SHA512_SSSE3
CONFIG_CRYPTO_SM3_AVX_X86_64
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL
CONFIG_CRYPTO_CRC32C_INTEL
CONFIG_CRYPTO_CRC32_PCLMUL
CONFIG_CRYPTO_CRCT10DIF_PCLMUL