diff --git a/drivers/virtio-vring.cc b/drivers/virtio-vring.cc index b2919b8da103cedbe1f94bf8adc055b7a3141acf..61b9635d66c9aec2950ccda1b2b4407da617f9d6 100644 --- a/drivers/virtio-vring.cc +++ b/drivers/virtio-vring.cc @@ -134,7 +134,7 @@ namespace virtio { vring_desc* descp = _desc; if (indirect) { - vring_desc* indirect = reinterpret_cast<vring_desc*>(malloc((_sg_vec.size())*sizeof(vring_desc))); + vring_desc* indirect = reinterpret_cast<vring_desc*>(alloc_phys_contiguous_aligned((_sg_vec.size())*sizeof(vring_desc), 8)); if (!indirect) return false; _desc[idx]._flags = vring_desc::VRING_DESC_F_INDIRECT; @@ -187,7 +187,7 @@ namespace virtio { int idx = elem._id; if (_desc[idx]._flags & vring_desc::VRING_DESC_F_INDIRECT) { - free(mmu::phys_to_virt(_desc[idx]._paddr)); + free_phys_contiguous_aligned(mmu::phys_to_virt(_desc[idx]._paddr)); } else while (_desc[idx]._flags & vring_desc::VRING_DESC_F_NEXT) { idx = _desc[idx]._next;