git: 710c055673b3 - main - virtio: Add KMSAN hooks for network and block devices
Mark Johnston
markj at FreeBSD.org
Wed Aug 11 20:44:50 UTC 2021
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=710c055673b3a39ff6e5fdf0bef49437d1e0c9a3
commit 710c055673b3a39ff6e5fdf0bef49437d1e0c9a3
Author: Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-08-11 20:23:25 +0000
Commit: Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-08-11 20:41:38 +0000
virtio: Add KMSAN hooks for network and block devices
This ensures that host-written data is marked as initialized.
Sponsored by: The FreeBSD Foundation
---
sys/dev/virtio/block/virtio_blk.c | 3 +++
sys/dev/virtio/network/if_vtnet.c | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/sys/dev/virtio/block/virtio_blk.c b/sys/dev/virtio/block/virtio_blk.c
index 8a5558f4571d..e4a20bfc3031 100644
--- a/sys/dev/virtio/block/virtio_blk.c
+++ b/sys/dev/virtio/block/virtio_blk.c
@@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
#include <sys/bio.h>
#include <sys/malloc.h>
#include <sys/module.h>
+#include <sys/msan.h>
#include <sys/sglist.h>
#include <sys/sysctl.h>
#include <sys/lock.h>
@@ -1151,6 +1152,8 @@ vtblk_bio_done(struct vtblk_softc *sc, struct bio *bp, int error)
bp->bio_resid = bp->bio_bcount;
bp->bio_error = error;
bp->bio_flags |= BIO_ERROR;
+ } else {
+ kmsan_mark_bio(bp, KMSAN_STATE_INITED);
}
if (bp->bio_driver1 != NULL) {
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index e65914c5184f..bbda5cb90707 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -36,9 +36,10 @@ __FBSDID("$FreeBSD$");
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/sockio.h>
-#include <sys/mbuf.h>
#include <sys/malloc.h>
+#include <sys/mbuf.h>
#include <sys/module.h>
+#include <sys/msan.h>
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <sys/random.h>
@@ -2107,6 +2108,8 @@ vtnet_rxq_eof(struct vtnet_rxq *rxq)
continue;
}
+ kmsan_mark_mbuf(m, KMSAN_STATE_INITED);
+
/*
* Save an endian swapped version of the header prior to it
* being stripped. The header is always at the start of the
More information about the dev-commits-src-main
mailing list