While unregistering the hdmi-codec, the hdmi device list must be cleaned up. It avoids kernel page fault when registering again the hdmi-codec.
Cc: Liam Girdwood lgirdwood@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Jaroslav Kysela perex@perex.cz Cc: Takashi Iwai tiwai@suse.com Cc: Kuninori Morimoto kuninori.morimoto.gx@renesas.com Cc: Jyri Sarha jsarha@ti.com Cc: Arnaud Pouliquen arnaud.pouliquen@st.com Cc: Philipp Zabel p.zabel@pengutronix.de
Signed-off-by: Vincent Abriou vincent.abriou@st.com --- sound/soc/codecs/hdmi-codec.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c index 90b5948..1ca405e 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c @@ -479,6 +479,18 @@ static int hdmi_codec_probe(struct platform_device *pdev)
static int hdmi_codec_remove(struct platform_device *pdev) { + struct device *dev = &pdev->dev; + struct list_head *pos; + + list_for_each(pos, &hdmi_device_list) { + struct hdmi_device *tmp = pos_to_hdmi_device(pos); + + if (tmp->dev == dev->parent) { + list_del(pos); + break; + } + } + snd_soc_unregister_codec(&pdev->dev); return 0; }