Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd6b02fe authored by Becky Bruce's avatar Becky Bruce Committed by Ingo Molnar
Browse files

swiotlb: map_page fix for highmem systems



The current code calls virt_to_phys() on address that might
be in highmem, which is bad.  This wasn't needed, anyway, because
we already have the physical address we need.

Get rid of the now-unused virtual address as well.

Signed-off-by: default avatarBecky Bruce <beckyb@kernel.crashing.org>
Acked-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
Cc: jeremy@goop.org
Cc: ian.campbell@citrix.com
LKML-Reference: <1239199761-22886-4-git-send-email-galak@kernel.crashing.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 67131ad0
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -640,7 +640,6 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
			    struct dma_attrs *attrs)
{
	phys_addr_t phys = page_to_phys(page) + offset;
	void *ptr = page_address(page) + offset;
	dma_addr_t dev_addr = swiotlb_phys_to_bus(dev, phys);
	void *map;

@@ -651,7 +650,7 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
	 * buffering it.
	 */
	if (!address_needs_mapping(dev, dev_addr, size) &&
	    !range_needs_mapping(virt_to_phys(ptr), size))
	    !range_needs_mapping(phys, size))
		return dev_addr;

	/*