[Bug 281402] zfs: kmsan reports Uninitialized UMA memory from zio_data_buf_alloc
Date: Tue, 10 Sep 2024 14:06:05 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281402
Mark Johnston <markj@FreeBSD.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|New |Open
--- Comment #2 from Mark Johnston <markj@FreeBSD.org> ---
(In reply to Alan Somers from comment #1)
So, I'm not too familiar with zio_t. Reading vdev_file_io_strategy(), I
suspect we want a kmsan_check_abd(), akin to kmsan_check_bio() etc.. (Note
that when KMSAN is configured, we try to disable unmapped I/O everywhere,
including ZFS. KMSAN does not shadow the direct map. This is not ideal.)
That is, something like
void
kmsan_check_abd(abd_t abd, const char *descr)
{
KASSERT(abd_is_linear(abd));
kmsan_shadow_check(abd_to_buf(abd), abd->abd_size, descr);
}
Or a kmsan_check_zio(), which applies the above to zio->io_abd when the type is
ZIO_TYPE_WRITE.
Then, various stages of the ZIO pipeline should check the abd/zio when writing.
I guess __zio_execute() should perform that check. That said, I'm not certain
it's true that the ZIO buffer is initialized at all stages in the pipeline (I'm
just not that familiar with the I/O path), so we might get false positives.
This way, we can at least narrow it down to a particular stage, or prove that
the data was uninitialized before entering the pipeline at all. I guess
putting a check in zio_write() would be a good idea too.
--
You are receiving this mail because:
You are the assignee for the bug.