Add missing iommu_device_sysfs_remove in error path. Also adjust sequence of deinit functions in the remove.
Signed-off-by: Jeffy Chen <jeffy.c...@rock-chips.com> --- Changes in v2: None drivers/iommu/rockchip-iommu.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index 4ffb3a65c9d2..bd8b32dc0db6 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -1182,18 +1182,20 @@ static int rk_iommu_probe(struct platform_device *pdev) iommu_device_set_ops(&iommu->iommu, &rk_iommu_ops); err = iommu_device_register(&iommu->iommu); + if (err) { + iommu_device_sysfs_remove(&iommu->iommu); + return err; + } - return err; + return 0; } static int rk_iommu_remove(struct platform_device *pdev) { struct rk_iommu *iommu = platform_get_drvdata(pdev); - if (iommu) { - iommu_device_sysfs_remove(&iommu->iommu); - iommu_device_unregister(&iommu->iommu); - } + iommu_device_unregister(&iommu->iommu); + iommu_device_sysfs_remove(&iommu->iommu); return 0; } -- 2.11.0