kmsan: Implement __msan_test_shadow()
This is needed when building OpenZFS with KMSAN enabled, as the bundled zstd uses it. MFC after: 1 week
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user