• Kuninori Morimoto's avatar
    ASoC: soc-pcm: move dpcm_path_put() to soc-pcm.c · 52645e33
    Kuninori Morimoto authored
    dpcm_path_put() (A) is calling kfree(*list).
    The freed list is created by dapm_widget_list_create() (B) which is called
    from snd_soc_dapm_dai_get_connected_widgets() (C) which is called from
    dpcm_path_get() (D).
    
    (B)	dapm_widget_list_create(**list, ...)
    	{
    		...
    =>		*list = kzalloc();
    		...
    	}
    
    (C)	snd_soc_dapm_dai_get_connected_widgets(..., **list, ...)
    	{
    		...
    		dapm_widget_list_create(list, ...);
    		...
    	}
    
    (D)	dpcm_path_get(..., **list)
    	{
    		...
    		snd_soc_dapm_dai_get_connected_widgets(..., list, ...);
    		...
    	}
    
    (A)	dpcm_path_put(**list)
    	{
    =>		kfree(*list);
    	}
    
    This kind of unbalance code is very difficult to read/understand.
    To avoid this issue, this patch adds each missing paired function
    dapm_widget_list_free()         for dapm_widget_list_create() (B), and
    snd_soc_dapm_dai_free_widgets() for snd_soc_dapm_dai_get_connected_widgets() (C).
    
    This patch uses these, and moves dpcm_path_put() next to dpcm_path_get().
    Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Link: https://lore.kernel.org/r/87a75fjc9q.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    52645e33
soc-dpcm.h 4.84 KB