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

Commit a30f6fb7 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Dave Airlie
Browse files

drm/radeon: Fix pci_map_page() error checking



0 is a valid DMA address from pci_map_page(), use pci_dma_mapping_error()
instead to check for errors

[airlied: fix warning + two other places with errors.]

Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 1a72d65d
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -152,7 +152,7 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
		/* we need to support large memory configurations */
		/* we need to support large memory configurations */
		entry->busaddr[i] = pci_map_page(dev->pdev, entry->pagelist[i],
		entry->busaddr[i] = pci_map_page(dev->pdev, entry->pagelist[i],
						 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
						 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
		if (entry->busaddr[i] == 0) {
		if (pci_dma_mapping_error(dev->pdev, entry->busaddr[i])) {
			DRM_ERROR("unable to map PCIGART pages!\n");
			DRM_ERROR("unable to map PCIGART pages!\n");
			drm_ati_pcigart_cleanup(dev, gart_info);
			drm_ati_pcigart_cleanup(dev, gart_info);
			address = NULL;
			address = NULL;
+1 −1
Original line number Original line Diff line number Diff line
@@ -200,7 +200,7 @@ int r600_page_table_init(struct drm_device *dev)
						 entry->pagelist[i], 0,
						 entry->pagelist[i], 0,
						 PAGE_SIZE,
						 PAGE_SIZE,
						 PCI_DMA_BIDIRECTIONAL);
						 PCI_DMA_BIDIRECTIONAL);
		if (entry->busaddr[i] == 0) {
		if (pci_dma_mapping_error(dev->pdev, entry->busaddr[i])) {
			DRM_ERROR("unable to map PCIGART pages!\n");
			DRM_ERROR("unable to map PCIGART pages!\n");
			r600_page_table_cleanup(dev, gart_info);
			r600_page_table_cleanup(dev, gart_info);
			goto done;
			goto done;
+2 −1
Original line number Original line Diff line number Diff line
@@ -347,7 +347,8 @@ int radeon_dummy_page_init(struct radeon_device *rdev)
		return -ENOMEM;
		return -ENOMEM;
	rdev->dummy_page.addr = pci_map_page(rdev->pdev, rdev->dummy_page.page,
	rdev->dummy_page.addr = pci_map_page(rdev->pdev, rdev->dummy_page.page,
					0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
					0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
	if (!rdev->dummy_page.addr) {
	if (pci_dma_mapping_error(rdev->pdev, rdev->dummy_page.addr)) {
		dev_err(&rdev->pdev->dev, "Failed to DMA MAP the dummy page\n");
		__free_page(rdev->dummy_page.page);
		__free_page(rdev->dummy_page.page);
		rdev->dummy_page.page = NULL;
		rdev->dummy_page.page = NULL;
		return -ENOMEM;
		return -ENOMEM;