mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
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:
parent
96aceacda8
commit
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, },
|
||||
|
Loading…
Reference in New Issue
Block a user