The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=bf149f2e88cb3836e02ddabd9944eb58650a72ae
commit bf149f2e88cb3836e02ddabd9944eb58650a72ae Author: Mark Johnston <[email protected]> AuthorDate: 2026-02-13 15:42:19 +0000 Commit: Mark Johnston <[email protected]> CommitDate: 2026-02-13 15:42:19 +0000 kmsan: Implement __msan_test_shadow() This is needed when building OpenZFS with KMSAN enabled, as the bundled zstd uses it. MFC after: 1 week --- sys/kern/subr_msan.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sys/kern/subr_msan.c b/sys/kern/subr_msan.c index 883dbd2b7604..dd69375f4ed1 100644 --- a/sys/kern/subr_msan.c +++ b/sys/kern/subr_msan.c @@ -662,6 +662,7 @@ void __msan_poison_alloca(const void *, uint64_t, const char *); void __msan_unpoison_alloca(const void *, uint64_t); void __msan_warning(msan_orig_t); msan_tls_t *__msan_get_context_state(void); +intptr_t __msan_test_shadow(const void *, size_t); void __msan_instrument_asm_store(const void *addr, size_t size) @@ -726,6 +727,23 @@ __msan_get_context_state(void) return (&mtd->tls[mtd->ctx]); } +intptr_t +__msan_test_shadow(const void *addr, size_t len) +{ + uint8_t *shad; + + if (__predict_false(!kmsan_enabled)) + return (-1); + if (__predict_false(kmsan_md_unsupported((vm_offset_t)addr))) + return (-1); + + shad = (uint8_t *)kmsan_md_addr_to_shad((vm_offset_t)addr); + for (size_t i = 0; i < len; i++) + if (shad[i] != 0) + return (i); + return (-1); +} + /* -------------------------------------------------------------------------- */ /*
