Stefano Garzarella
2021-Aug-09 09:04 UTC
[PATCH] vdpa_sim: Fix incorrect size passed to alloc_iova()
On Mon, Aug 09, 2021 at 02:02:57PM +0800, Xie Yongji wrote:>The size passed to alloc_iova() should be the size of >page frames to allocate rather than size in bytes. > >Fixes: 4080fc106750 ("vdpa_sim: use iova module to allocate IOVA addresses") >Signed-off-by: Xie Yongji <xieyongji at bytedance.com> >--- > drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > >diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c >index 14e024de5cbf..1ccf615221fe 100644 >--- a/drivers/vdpa/vdpa_sim/vdpa_sim.c >+++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c >@@ -137,7 +137,8 @@ static dma_addr_t vdpasim_map_range(struct vdpasim *vdpasim, phys_addr_t paddr, > int ret; > > /* We set the limit_pfn to the maximum (ULONG_MAX - 1) */ >- iova = alloc_iova(&vdpasim->iova, size, ULONG_MAX - 1, true); >+ iova = alloc_iova(&vdpasim->iova, size >> iova_shift(&vdpasim->iova), >+ ULONG_MAX - 1, true); > if (!iova) > return DMA_MAPPING_ERROR; > >-- >2.11.0 >We invoked init_iova_domain() with granularity = 1, so it should be correct to use the size in bytes. However, in order to avoid future bugs if we change granularity, I agree that it's better to use iova_shift(): Reviewed-by: Stefano Garzarella <sgarzare at redhat.com> Thanks, Stefano