lkml.org 
[lkml]   [2019]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.1 14/51] ASoC: hda: fix unbalanced codec dev refcount for HDA_DEV_ASOC
    Date
    From: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>

    [ Upstream commit d6947bb234dcc86e878d502516d0fb9d635aa2ae ]

    HDA_DEV_ASOC type codec device refcounts are managed differently
    from HDA_DEV_LEGACY devices. The refcount is released explicitly
    in snd_hdac_ext_bus_device_remove() for ASOC type devices.
    So, remove the put_device() call in snd_hda_codec_dev_free()
    for such devices to make the refcount balanced. This will prevent
    the NULL pointer exception when the codec driver is released
    after the card is freed.

    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/pci/hda/hda_codec.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
    index b20eb7fc83eb..fcdf2cd3783b 100644
    --- a/sound/pci/hda/hda_codec.c
    +++ b/sound/pci/hda/hda_codec.c
    @@ -840,7 +840,14 @@ static int snd_hda_codec_dev_free(struct snd_device *device)
    if (codec->core.type == HDA_DEV_LEGACY)
    snd_hdac_device_unregister(&codec->core);
    codec_display_power(codec, false);
    - put_device(hda_codec_dev(codec));
    +
    + /*
    + * In the case of ASoC HD-audio bus, the device refcount is released in
    + * snd_hdac_ext_bus_device_remove() explicitly.
    + */
    + if (codec->core.type == HDA_DEV_LEGACY)
    + put_device(hda_codec_dev(codec));
    +
    return 0;
    }

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-06-26 05:51    [W:4.340 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site