ALSA: ad1889: Fix the missing snd_card_free() call at probe error
[ Upstream commita8e84a5da1
] 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:567f587541
("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>
This commit is contained in:
Родитель
96aceacda8
Коммит
872e5fa078
|
@ -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, },
|
||||
|
|
Загрузка…
Ссылка в новой задаче