On Thu, Oct 09, 2025 at 10:27:55AM +0200, Johan Hovold wrote:
On Thu, Oct 09, 2025 at 09:56:18AM +0200, Thierry Reding wrote:
On Tue, Oct 07, 2025 at 11:43:27AM +0200, Johan Hovold wrote:
@@ -830,10 +830,9 @@ static struct tegra_smmu *tegra_smmu_find(struct device_node *np) return NULL; mc = platform_get_drvdata(pdev);
- if (!mc) {
put_device(&pdev->dev);
- put_device(&pdev->dev);
- if (!mc) return NULL;
- }
return mc->smmu;
pdev->dev is what's backing mc, so if we use put_device() here, then the MC could go away at any time, right?
Holding a reference to a device does not prevent its driver data from going away so there is no point in keeping the reference.
But from what I can tell, you don't need to worry about that anyway since it's the memory controller driver that registers the iommu (and the driver can't be unbound).
That's true. It'd be nice to at least conceptually do the right thing here, but not sure it's worth it. As you said, driver data going away would need special handling and it's not even clear what that would mean in terms of the clients...
Acked-by: Thierry Reding treding@nvidia.com