lkml.org 
[lkml]   [2022]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 108/219] ALSA: ad1889: Fix the missing snd_card_free() call at probe error
    Date
    From: Takashi Iwai <tiwai@suse.de>

    [ Upstream commit a8e84a5da18e6d786540aa4ceb6f969d5f1a441d ]

    The previous cleanup with devres may lead to the incorrect release
    orders at the probe error handling due to the devres's nature. Until
    we register the card, snd_card_free() has to be called at first for
    releasing the stuff properly when the driver tries to manage and
    release the stuff via card->private_free().

    This patch fixes it by calling snd_card_free() on the error from the
    probe callback using a new helper function.

    Fixes: 567f58754109 ("ALSA: ad1889: Allocate resources with device-managed APIs")
    Link: https://lore.kernel.org/r/20220412102636.16000-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/pci/ad1889.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c
    index bba4dae8dcc7..50e30704bf6f 100644
    --- a/sound/pci/ad1889.c
    +++ b/sound/pci/ad1889.c
    @@ -844,8 +844,8 @@ snd_ad1889_create(struct snd_card *card, struct pci_dev *pci)
    }

    static int
    -snd_ad1889_probe(struct pci_dev *pci,
    - const struct pci_device_id *pci_id)
    +__snd_ad1889_probe(struct pci_dev *pci,
    + const struct pci_device_id *pci_id)
    {
    int err;
    static int devno;
    @@ -904,6 +904,12 @@ snd_ad1889_probe(struct pci_dev *pci,
    return 0;
    }

    +static int snd_ad1889_probe(struct pci_dev *pci,
    + const struct pci_device_id *pci_id)
    +{
    + return snd_card_free_on_error(&pci->dev, __snd_ad1889_probe(pci, pci_id));
    +}
    +
    static const struct pci_device_id snd_ad1889_ids[] = {
    { PCI_DEVICE(PCI_VENDOR_ID_ANALOG_DEVICES, PCI_DEVICE_ID_AD1889JS) },
    { 0, },
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-18 14:30    [W:4.176 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site