Merge "sound: usb: Unmap secondary event ring before freeing"

This commit is contained in:
qctecmdr 2020-12-09 19:47:45 -08:00 • committed by Gerrit - the friendly Code Review server
commit 712f68c376

View file

@ -856,6 +856,18 @@ static void uaudio_dev_intf_cleanup(struct usb_device *udev,
info->in_use = false;
}
static void uaudio_event_ring_cleanup_free(struct uaudio_dev *dev)
{
clear_bit(dev->card_num, &uaudio_qdev->card_slot);
/* all audio devices are disconnected */
if (!uaudio_qdev->card_slot) {
uaudio_iommu_unmap(MEM_EVENT_RING, IOVA_BASE, PAGE_SIZE,
PAGE_SIZE);
xhci_sec_event_ring_cleanup(dev->udev, uaudio_qdev->intr_num);
uaudio_dbg("all audio devices disconnected\n");
}
}
static void uaudio_dev_cleanup(struct uaudio_dev *dev)
{
int if_idx;
@ -879,17 +891,7 @@ static void uaudio_dev_cleanup(struct uaudio_dev *dev)
/* free interface info */
kfree(dev->info);
dev->info = NULL;
clear_bit(dev->card_num, &uaudio_qdev->card_slot);
/* all audio devices are disconnected */
if (!uaudio_qdev->card_slot) {
uaudio_iommu_unmap(MEM_EVENT_RING, IOVA_BASE, PAGE_SIZE,
PAGE_SIZE);
xhci_sec_event_ring_cleanup(dev->udev, uaudio_qdev->intr_num);
uaudio_dbg("all audio devices disconnected\n");
}
uaudio_event_ring_cleanup_free(dev);
dev->udev = NULL;
}
@ -961,17 +963,7 @@ static void uaudio_dev_release(struct kref *kref)
uaudio_dbg("for dev %pK\n", dev);
atomic_set(&dev->in_use, 0);
clear_bit(dev->card_num, &uaudio_qdev->card_slot);
/* all audio devices are disconnected */
if (!uaudio_qdev->card_slot) {
xhci_sec_event_ring_cleanup(dev->udev, uaudio_qdev->intr_num);
uaudio_iommu_unmap(MEM_EVENT_RING, IOVA_BASE, PAGE_SIZE,
PAGE_SIZE);
uaudio_dbg("all audio devices disconnected\n");
}
uaudio_event_ring_cleanup_free(dev);
wake_up(&dev->disconnect_wq);
}