Missing critical phys_to_virt in lib/swiotlb.c
authorDavid Moore <dcm@acm.org>
Sun, 4 Feb 2007 18:39:40 +0000 (13:39 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Mar 2007 18:50:19 +0000 (10:50 -0800)
Missing critical phys_to_virt in lib/swiotlb.c

Adds missing call to phys_to_virt() in the
lib/swiotlb.c:swiotlb_sync_sg() function.  Without this change, a kernel
panic will always occur whenever a SWIOTLB bounce buffer from a
scatter-gather list gets synced.  Affected are especially Intel x86_64
machines with more than about 3 GB RAM.

Signed-off-by: David Moore <dcm@acm.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
lib/swiotlb.c

index 10625785eefd90d412668fce760190b122569bb9..d6d57fb475e3cc7d399e9fb9357b0012c2ade082 100644 (file)
@@ -750,7 +750,7 @@ swiotlb_sync_sg(struct device *hwdev, struct scatterlist *sg,
 
        for (i = 0; i < nelems; i++, sg++)
                if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg))
-                       sync_single(hwdev, (void *) sg->dma_address,
+                       sync_single(hwdev, phys_to_virt(sg->dma_address),
                                    sg->dma_length, dir, target);
 }