Skip to content

Commit c0317ad

Browse files
Mornixmripard
authored andcommitted
drm/vc4: fix infinite EPROBE_DEFER loop
`vc4_hdmi_audio_init` calls `devm_snd_dmaengine_pcm_register` which may return EPROBE_DEFER. Calling `drm_connector_hdmi_audio_init` adds a child device. The driver model docs[1] state that adding a child device prior to returning EPROBE_DEFER may result in an infinite loop. [1] https://www.kernel.org/doc/html/v6.14/driver-api/driver-model/driver.html Fixes: 9640f14 ("drm/vc4: hdmi: switch to using generic HDMI Codec infrastructure") Signed-off-by: Gabriel Dalimonte <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Maxime Ripard <[email protected]>
1 parent 779a0c9 commit c0317ad

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

drivers/gpu/drm/vc4/vc4_hdmi.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -560,12 +560,6 @@ static int vc4_hdmi_connector_init(struct drm_device *dev,
560560
if (ret)
561561
return ret;
562562

563-
ret = drm_connector_hdmi_audio_init(connector, dev->dev,
564-
&vc4_hdmi_audio_funcs,
565-
8, false, -1);
566-
if (ret)
567-
return ret;
568-
569563
drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs);
570564

571565
/*
@@ -2291,6 +2285,12 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
22912285
return ret;
22922286
}
22932287

2288+
ret = drm_connector_hdmi_audio_init(&vc4_hdmi->connector, dev,
2289+
&vc4_hdmi_audio_funcs, 8, false,
2290+
-1);
2291+
if (ret)
2292+
return ret;
2293+
22942294
dai_link->cpus = &vc4_hdmi->audio.cpu;
22952295
dai_link->codecs = &vc4_hdmi->audio.codec;
22962296
dai_link->platforms = &vc4_hdmi->audio.platform;

0 commit comments

Comments
 (0)