When samsung_dsim_attach() is called but the next_bridge is not (yet) known, it calls drm_bridge_attach() unconditionally. In turn drm_bridge_attach() will return -EINVAL because the bridge pointer in NULL. -EINVAL is propagated transparently to the caller, resulting in the whole attach operation to fail.
This is fine for current use cases, but not when introducing for bridge hotplug, which implies the next bridge could be hot-plugged later on. In preparation to support bridge hotplug, consider the absence of a next_bridge an -EPROBE_DEFER, not a hard error. Signed-off-by: Luca Ceresoli <[email protected]> --- drivers/gpu/drm/bridge/samsung-dsim.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c index cefb20ec68ad..3c70a45c5dce 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1828,6 +1828,9 @@ static int samsung_dsim_attach(struct drm_bridge *bridge, { struct samsung_dsim *dsi = bridge_to_dsi(bridge); + if (!dsi->bridge.next_bridge) + return -EPROBE_DEFER; + return drm_bridge_attach(encoder, dsi->bridge.next_bridge, bridge, flags); } -- 2.54.0
