Message ID | 20220127111452.222002-1-maxime@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/vc4: hdmi: Unregister codec device on unbind | expand |
On Thu, 27 Jan 2022 12:14:52 +0100, Maxime Ripard wrote: > On bind we will register the HDMI codec device but we don't unregister > it on unbind, leading to a device leakage. Unregister our device at > unbind. > > Applied to drm/drm-misc (drm-misc-fixes). Thanks! Maxime
On Thu, Feb 03, 2022 at 04:06:37PM +0100, Maxime Ripard wrote: > On Thu, 27 Jan 2022 12:14:52 +0100, Maxime Ripard wrote: > > On bind we will register the HDMI codec device but we don't unregister > > it on unbind, leading to a device leakage. Unregister our device at > > unbind. > > > > > > Applied to drm/drm-misc (drm-misc-fixes). This one hasn't been reviewed yet, so I dropped it for now Maxime
Hello Maxime, On 1/27/22 12:14, Maxime Ripard wrote: > On bind we will register the HDMI codec device but we don't unregister > it on unbind, leading to a device leakage. Unregister our device at > unbind. > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > --- Patch looks good to me. Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Best regards,
On Thu, 27 Jan 2022 12:14:52 +0100, Maxime Ripard wrote: > On bind we will register the HDMI codec device but we don't unregister > it on unbind, leading to a device leakage. Unregister our device at > unbind. > > Applied to drm/drm-misc (drm-misc-fixes). Thanks! Maxime
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 502d5bea5f61..395a9e9c1e5a 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1746,6 +1746,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) dev_err(dev, "Couldn't register the HDMI codec: %ld\n", PTR_ERR(codec_pdev)); return PTR_ERR(codec_pdev); } + vc4_hdmi->audio.codec_pdev = codec_pdev; dai_link->cpus = &vc4_hdmi->audio.cpu; dai_link->codecs = &vc4_hdmi->audio.codec; @@ -1785,6 +1786,12 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) } +static void vc4_hdmi_audio_exit(struct vc4_hdmi *vc4_hdmi) +{ + platform_device_unregister(vc4_hdmi->audio.codec_pdev); + vc4_hdmi->audio.codec_pdev = NULL; +} + static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv) { struct vc4_hdmi *vc4_hdmi = priv; @@ -2689,6 +2696,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master, kfree(vc4_hdmi->hdmi_regset.regs); kfree(vc4_hdmi->hd_regset.regs); + vc4_hdmi_audio_exit(vc4_hdmi); vc4_hdmi_cec_exit(vc4_hdmi); vc4_hdmi_hotplug_exit(vc4_hdmi); vc4_hdmi_connector_destroy(&vc4_hdmi->connector); diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h index db53500a8435..275c4674d50f 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h @@ -113,6 +113,7 @@ struct vc4_hdmi_audio { struct snd_soc_dai_link_component platform; struct snd_dmaengine_dai_dma_data dma_data; struct hdmi_audio_infoframe infoframe; + struct platform_device *codec_pdev; bool streaming; };
On bind we will register the HDMI codec device but we don't unregister it on unbind, leading to a device leakage. Unregister our device at unbind. Signed-off-by: Maxime Ripard <maxime@cerno.tech> --- drivers/gpu/drm/vc4/vc4_hdmi.c | 8 ++++++++ drivers/gpu/drm/vc4/vc4_hdmi.h | 1 + 2 files changed, 9 insertions(+)