Commit 0547c2f5 authored by Hiroshi Doyu's avatar Hiroshi Doyu Committed by Joerg Roedel
Browse files

iommu/tegra: smmu: Remove unnecessary cleanups with devm_*()



Remove unnecessary cleanup procedures with devm_*() functions.

Signed-off-by: default avatarHiroshi DOYU <hdoyu@nvidia.com>
Acked-by: default avatarStephen Warren <swarren@wwwdotorg.org>
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent a3b24915
Loading
Loading
Loading
Loading
+6 −31
Original line number Diff line number Diff line
@@ -971,51 +971,26 @@ static int tegra_smmu_probe(struct platform_device *pdev)
	spin_lock_init(&smmu->lock);
	err = smmu_setup_regs(smmu);
	if (err)
		goto fail;
		return err;
	platform_set_drvdata(pdev, smmu);

	smmu->avp_vector_page = alloc_page(GFP_KERNEL);
	if (!smmu->avp_vector_page)
		goto fail;
		return -ENOMEM;

	smmu_handle = smmu;
	return 0;

fail:
	if (smmu->avp_vector_page)
		__free_page(smmu->avp_vector_page);
	if (smmu && smmu->as) {
		for (i = 0; i < smmu->num_as; i++) {
			if (smmu->as[i].pdir_page) {
				ClearPageReserved(smmu->as[i].pdir_page);
				__free_page(smmu->as[i].pdir_page);
			}
		}
		devm_kfree(dev, smmu->as);
	}
	devm_kfree(dev, smmu);
	return err;
}

static int tegra_smmu_remove(struct platform_device *pdev)
{
	struct smmu_device *smmu = platform_get_drvdata(pdev);
	struct device *dev = smmu->dev;

	smmu_write(smmu, SMMU_CONFIG_DISABLE, SMMU_CONFIG);
	platform_set_drvdata(pdev, NULL);
	if (smmu->as) {
	int i;

	smmu_write(smmu, SMMU_CONFIG_DISABLE, SMMU_CONFIG);
	for (i = 0; i < smmu->num_as; i++)
		free_pdir(&smmu->as[i]);
		devm_kfree(dev, smmu->as);
	}
	if (smmu->avp_vector_page)
	__free_page(smmu->avp_vector_page);
	if (smmu->regs)
		devm_iounmap(dev, smmu->regs);
	devm_kfree(dev, smmu);
	smmu_handle = NULL;
	return 0;
}