On Fri, Jan 07, 2022 at 08:09:11AM +0000, Miaoqian Lin wrote: > The reference taken by 'of_find_device_by_node()' must be released when > not needed anymore. > Add the corresponding 'put_device()' in the error handling path. > > Fixes: 765a9d1d02b2 ("iommu/tegra-smmu: Fix mc errors on tegra124-nyan") > Signed-off-by: Miaoqian Lin <linmq006@xxxxxxxxx> > --- > drivers/iommu/tegra-smmu.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c > index e900e3c46903..2561ce8a2ce8 100644 > --- a/drivers/iommu/tegra-smmu.c > +++ b/drivers/iommu/tegra-smmu.c > @@ -808,8 +808,10 @@ static struct tegra_smmu *tegra_smmu_find(struct device_node *np) > return NULL; > > mc = platform_get_drvdata(pdev); > - if (!mc) > + if (!mc) { > + put_device(&pdev->dev); > return NULL; > + } > > return mc->smmu; > } Sorry for the late reply, looks correct. We probably also need a similar call in ->release_device(). I also wonder if we should be returning an -EPROBE_DEFER here, which is technically the correct thing to do, though in practice that will likely never happen because these pointers are set during an arch_initcall, so should always be available by the time a driver tries to attach to an IOMMU. Acked-by: Thierry Reding <treding@xxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature