lkml.org 
[lkml]   [2019]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 009/149] iommu/amd: Unmap all mapped pages in error path of map_sg
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit f1724c0883bb0ce93b8dcb94b53dcca3b75ac9a7 ]

    In the error path of map_sg there is an incorrect if condition
    for breaking out of the loop that searches the scatterlist
    for mapped pages to unmap. Instead of breaking out of the
    loop once all the pages that were mapped have been unmapped,
    it will break out of the loop after it has unmapped 1 page.
    Fix the condition, so it breaks out of the loop only after
    all the mapped pages have been unmapped.

    Fixes: 80187fd39dcb ("iommu/amd: Optimize map_sg and unmap_sg")
    Cc: Joerg Roedel <joro@8bytes.org>
    Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/iommu/amd_iommu.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
    index 2a5c05ca7fca..2ab87e3f07e6 100644
    --- a/drivers/iommu/amd_iommu.c
    +++ b/drivers/iommu/amd_iommu.c
    @@ -2555,7 +2555,7 @@ static int map_sg(struct device *dev, struct scatterlist *sglist,
    bus_addr = address + s->dma_address + (j << PAGE_SHIFT);
    iommu_unmap_page(domain, bus_addr, PAGE_SIZE);

    - if (--mapped_pages)
    + if (--mapped_pages == 0)
    goto out_free_iova;
    }
    }
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-03-12 18:57    [W:4.041 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site