mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 12:25:00 -04:00
Merge "sound: usb: Unmap secondary event ring before freeing"
This commit is contained in:
commit
712f68c376
1 changed files with 14 additions and 22 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue