• Charles Keepax's avatar
    ASoC: dapm: Fix regression introducing multiple copies of DAI widgets · 595571cc
    Charles Keepax authored
    Refactoring was done to factor out the linking of DAI widgets into
    a helper function, dapm_add_valid_dai_widget. However when this was
    done, a regression was introduced for CODEC to CODEC links. It was
    over looked that the playback and capture variables persisted across
    all CODEC DAIs being processed, which ensured that the special DAI
    widget that is added for CODEC to CODEC links was only created once.
    This bug causes kernel panics during DAPM shutdown.
    
    To stick with the spirit of the original refactoring whilst fixing the
    issue, variables to hold the DAI widgets are added to snd_soc_dai_link.
    Furthermore the dapm_add_valid_dai_widget function is renamed to
    dapm_connect_dai_pair, the function only adds DAI widgets in the CODEC
    to CODEC case and its primary job is to add routes connecting two DAI
    widgets, making the original name quite misleading.
    
    Fixes: 6c4b13b5 ("ASoC: Add dapm_add_valid_dai_widget helper")
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20200409181209.30130-1-ckeepax@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    595571cc
soc-dapm.c 122 KB