vhost: fix guest/host physical address mapping
When reg_size < page_size the function read in rte_mem_virt2phy would not return, because host_user_addr is invalid. Fixes: e246896178e6 ("vhost: get guest/host physical address mappings") Cc: stable@dpdk.org Signed-off-by: Haifeng Lin <haifeng.lin@huawei.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
This commit is contained in:
parent
1feda4d8fc
commit
8c33fc10f6
@ -447,14 +447,14 @@ add_guest_pages(struct virtio_net *dev, struct virtio_memory_region *reg,
|
|||||||
reg_size -= size;
|
reg_size -= size;
|
||||||
|
|
||||||
while (reg_size > 0) {
|
while (reg_size > 0) {
|
||||||
|
size = RTE_MIN(reg_size, page_size);
|
||||||
host_phys_addr = rte_mem_virt2phy((void *)(uintptr_t)
|
host_phys_addr = rte_mem_virt2phy((void *)(uintptr_t)
|
||||||
host_user_addr);
|
host_user_addr);
|
||||||
add_one_guest_page(dev, guest_phys_addr, host_phys_addr,
|
add_one_guest_page(dev, guest_phys_addr, host_phys_addr, size);
|
||||||
page_size);
|
|
||||||
|
|
||||||
host_user_addr += page_size;
|
host_user_addr += size;
|
||||||
guest_phys_addr += page_size;
|
guest_phys_addr += size;
|
||||||
reg_size -= page_size;
|
reg_size -= size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user