diff options
Diffstat (limited to 'drivers/base/platform.c')
| -rw-r--r-- | drivers/base/platform.c | 25 | 
1 files changed, 6 insertions, 19 deletions
| diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 7fa654f1288b..b5ce7b085795 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -363,10 +363,10 @@ static void setup_pdev_dma_masks(struct platform_device *pdev)  {  	if (!pdev->dev.coherent_dma_mask)  		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); -	if (!pdev->dma_mask) -		pdev->dma_mask = DMA_BIT_MASK(32); -	if (!pdev->dev.dma_mask) -		pdev->dev.dma_mask = &pdev->dma_mask; +	if (!pdev->dev.dma_mask) { +		pdev->platform_dma_mask = DMA_BIT_MASK(32); +		pdev->dev.dma_mask = &pdev->platform_dma_mask; +	}  };  /** @@ -662,20 +662,8 @@ struct platform_device *platform_device_register_full(  	pdev->dev.of_node_reused = pdevinfo->of_node_reused;  	if (pdevinfo->dma_mask) { -		/* -		 * This memory isn't freed when the device is put, -		 * I don't have a nice idea for that though.  Conceptually -		 * dma_mask in struct device should not be a pointer. -		 * See http://thread.gmane.org/gmane.linux.kernel.pci/9081 -		 */ -		pdev->dev.dma_mask = -			kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL); -		if (!pdev->dev.dma_mask) -			goto err; - -		kmemleak_ignore(pdev->dev.dma_mask); - -		*pdev->dev.dma_mask = pdevinfo->dma_mask; +		pdev->platform_dma_mask = pdevinfo->dma_mask; +		pdev->dev.dma_mask = &pdev->platform_dma_mask;  		pdev->dev.coherent_dma_mask = pdevinfo->dma_mask;  	} @@ -700,7 +688,6 @@ struct platform_device *platform_device_register_full(  	if (ret) {  err:  		ACPI_COMPANION_SET(&pdev->dev, NULL); -		kfree(pdev->dev.dma_mask);  		platform_device_put(pdev);  		return ERR_PTR(ret);  	} |