Re: [PATCH] of: platform: Destroy child devices symmetrically

From: Rob Herring
Date: Mon Aug 17 2020 - 17:54:50 EST


On Thu, 06 Aug 2020 17:36:50 +0200, Thierry Reding wrote:
> From: Thierry Reding <treding@xxxxxxxxxx>
>
> Iterate over child devices in reverse when unpopulating a platform
> device to make this step symmetrical with the population step. This
> fixes an issue in the Tegra DRM driver where upon module unload the
> DPAUX controller tries to unregister an I2C controller but will end
> up waiting indefinitely because one of the SOR devices is keeping a
> reference to it. Since the SOR devices are instantiated after the
> DPAUX devices, they would only be removed (and hence release their
> reference to the I2C controller) after the DPAUX devices have been
> removed.
>
> While destroying the child devices in reverse order helps in this
> situation, it isn't fully safe to do so either. An even better way
> would be for the child devices to be reordered to match the probe
> order, which would work irrespective of the instantiation order.
>
> However, reordering by probe order would be fairly complicated and
> doesn't fix any known issues, so we'll go with the simpler fix for
> now.
>
> Signed-off-by: Thierry Reding <treding@xxxxxxxxxx>
> ---
> drivers/of/platform.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>

Applied, thanks!