diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 38d8ba90c52562cd40d52bdd39dc49caf27f85f1..09920ba55ba19d3ce6e24c617cbb53eeb578b728 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1972,9 +1972,17 @@ static int azx_probe_continue(struct azx *chip) static void azx_remove(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); + struct azx *chip; + struct hda_intel *hda; + + if (card) { + /* flush the pending probing work */ + chip = card->private_data; + hda = container_of(chip, struct hda_intel, chip); + flush_work(&hda->probe_work); - if (card) snd_card_free(card); + } } static void azx_shutdown(struct pci_dev *pci)