02.10.2020 09:08, Nicolin Chen пишет: > static int tegra_smmu_of_xlate(struct device *dev, > struct of_phandle_args *args) > { > + struct platform_device *iommu_pdev = of_find_device_by_node(args->np); > + struct tegra_mc *mc = platform_get_drvdata(iommu_pdev); > u32 id = args->args[0]; > > + of_node_put(args->np); > + > + if (!mc || !mc->smmu) > + return -EPROBE_DEFER;
platform_get_drvdata(NULL) will crash. > + dev_iommu_priv_set(dev, mc->smmu); I think put_device(mc->dev) is missed here, doesn't it? Why sun50i-iommu driver doesn't have this error-checking? Is it really needed at all?