Message ID | 1629736550-2388-1-git-send-email-anthony.yznaga@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] vfio/type1: Fix vfio_find_dma_valid return | expand |
On Mon, 23 Aug 2021 09:35:50 -0700 Anthony Yznaga <anthony.yznaga@oracle.com> wrote: > vfio_find_dma_valid is defined to return WAITED on success if it was > necessary to wait. However, the loop forgets the WAITED value returned > by vfio_wait() and returns 0 in a later iteration. Fix it. > > Signed-off-by: Anthony Yznaga <anthony.yznaga@oracle.com> > Reviewed-by: Steve Sistare <steven.sistare@oracle.com> > > --- > v3: > use Steve Sistare's suggested commit text and add his R-b > v2: > use Alex Williamson's simplified fix > > drivers/vfio/vfio_iommu_type1.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Applied to vfio next branch for v5.15. Thanks, Alex
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 0b4f7c174c7a..0e9217687f5c 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -612,17 +612,17 @@ static int vfio_wait(struct vfio_iommu *iommu) static int vfio_find_dma_valid(struct vfio_iommu *iommu, dma_addr_t start, size_t size, struct vfio_dma **dma_p) { - int ret; + int ret = 0; do { *dma_p = vfio_find_dma(iommu, start, size); if (!*dma_p) - ret = -EINVAL; + return -EINVAL; else if (!(*dma_p)->vaddr_invalid) - ret = 0; + return ret; else ret = vfio_wait(iommu); - } while (ret > 0); + } while (ret == WAITED); return ret; }