lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 046/917] ALSA: hda: Free card instance properly at probe errors
    Date
    From: Takashi Iwai <tiwai@suse.de>

    commit 39173303c83859723dab32c2abfb97296d6af3bf upstream.

    The recent change in hda-intel driver to allow repeated probes
    surfaced a problem that has been hidden until; the probe process in
    the work calls azx_free() at the error path, and this skips the card
    free process that eventually releases codec instances. As a result,
    we get a kernel WARNING like:

    snd_hda_intel 0000:00:1f.3: Cannot probe codecs, giving up
    ------------[ cut here ]------------
    WARNING: CPU: 14 PID: 186 at sound/hda/hdac_bus.c:73
    ....

    For fixing this, we need to call snd_card_free() instead of
    azx_free(). Additionally, the device drvdata has to be cleared, as
    the driver binding itself is still active. Then the PM and other
    driver callbacks will ignore the procedure.

    Fixes: c0f1886de7e1 ("ALSA: hda: intel: Allow repeatedly probing on codec configuration errors")
    Reported-and-tested-by: Scott Branden <scott.branden@broadcom.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/063e2397-7edb-5f48-7b0d-618b938d9dd8@broadcom.com
    Link: https://lore.kernel.org/r/20211110194633.19098-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    sound/pci/hda/hda_intel.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/sound/pci/hda/hda_intel.c
    +++ b/sound/pci/hda/hda_intel.c
    @@ -2330,7 +2330,8 @@ static int azx_probe_continue(struct azx

    out_free:
    if (err < 0) {
    - azx_free(chip);
    + pci_set_drvdata(pci, NULL);
    + snd_card_free(chip->card);
    return err;
    }


    \
     
     \ /
      Last update: 2021-11-16 00:28    [W:2.385 / U:2.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site