From 8d2a55ca67b5334050c80ad5c3e064e2bc0a37f3 Mon Sep 17 00:00:00 2001 From: Tycho Nightingale Date: Mon, 6 May 2019 00:57:05 +0000 Subject: [PATCH] zero inputs to vm_page_initfake() for predictable results Reviewed by: kib Submitted by: Anton Rang Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D20162 --- sys/dev/nvdimm/nvdimm_spa.c | 3 ++- sys/x86/iommu/busdma_dmar.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/dev/nvdimm/nvdimm_spa.c b/sys/dev/nvdimm/nvdimm_spa.c index ce1f1f4ee7c5..e3de6e3911b2 100644 --- a/sys/dev/nvdimm/nvdimm_spa.c +++ b/sys/dev/nvdimm/nvdimm_spa.c @@ -177,6 +177,7 @@ nvdimm_spa_uio(struct nvdimm_spa_dev *dev, struct uio *uio) error = 0; if (dev->spa_kva == NULL) { mattr = nvdimm_spa_memattr(dev); + bzero(&m, sizeof(m)); vm_page_initfake(&m, 0, mattr); ma = &m; while (uio->uio_resid > 0) { @@ -276,7 +277,7 @@ nvdimm_spa_g_all_unmapped(struct nvdimm_spa_dev *dev, struct bio *bp, int rw) mattr = nvdimm_spa_memattr(dev); for (i = 0; i < nitems(ma); i++) { - maa[i].flags = 0; + bzero(&maa[i], sizeof(maa[i])); vm_page_initfake(&maa[i], dev->spa_phys_base + trunc_page(bp->bio_offset) + PAGE_SIZE * i, mattr); ma[i] = &maa[i]; diff --git a/sys/x86/iommu/busdma_dmar.c b/sys/x86/iommu/busdma_dmar.c index 1208118f8271..913f5b2af390 100644 --- a/sys/x86/iommu/busdma_dmar.c +++ b/sys/x86/iommu/busdma_dmar.c @@ -689,7 +689,7 @@ dmar_bus_dmamap_load_phys(bus_dma_tag_t dmat, bus_dmamap_t map1, */ if (fma == NULL) { fma = malloc(sizeof(struct vm_page) * ma_cnt, - M_DEVBUF, mflags); + M_DEVBUF, M_ZERO | mflags); if (fma == NULL) { free(ma, M_DEVBUF); return (ENOMEM); @@ -743,7 +743,7 @@ dmar_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map1, void *buf, */ if (fma == NULL) { fma = malloc(sizeof(struct vm_page) * ma_cnt, - M_DEVBUF, mflags); + M_DEVBUF, M_ZERO | mflags); if (fma == NULL) { free(ma, M_DEVBUF); return (ENOMEM);