BUG_ON(dir == DMA_NONE);
 
-       xen_dma_unmap_page(hwdev, paddr, size, dir, attrs);
+       xen_dma_unmap_page(hwdev, dev_addr, size, dir, attrs);
 
        /* NOTE: We use dev_addr here, not paddr! */
        if (is_xen_swiotlb_buffer(dev_addr)) {
        BUG_ON(dir == DMA_NONE);
 
        if (target == SYNC_FOR_CPU)
-               xen_dma_sync_single_for_cpu(hwdev, paddr, size, dir);
+               xen_dma_sync_single_for_cpu(hwdev, dev_addr, size, dir);
 
        /* NOTE: We use dev_addr here, not paddr! */
        if (is_xen_swiotlb_buffer(dev_addr))
                swiotlb_tbl_sync_single(hwdev, paddr, size, dir, target);
 
        if (target == SYNC_FOR_DEVICE)
-               xen_dma_sync_single_for_cpu(hwdev, paddr, size, dir);
+               xen_dma_sync_single_for_cpu(hwdev, dev_addr, size, dir);
 
        if (dir != DMA_FROM_DEVICE)
                return;