diff options
author | Takashi Iwai <tiwai@suse.de> | 2013-02-01 07:22:47 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2013-02-01 07:22:47 +0100 |
commit | 8058e14259ddc8c1824387198fc53700ed4cccc9 (patch) | |
tree | faffb83ca5173e5f3cbfd4170de603ada4812e23 /drivers/pci/hotplug/pciehp_hpc.c | |
parent | ALSA: hda - Fix non-snoop page handling (diff) | |
parent | ALSA: usb-audio: fix Roland A-PRO support (diff) | |
download | linux-8058e14259ddc8c1824387198fc53700ed4cccc9.tar.xz linux-8058e14259ddc8c1824387198fc53700ed4cccc9.zip |
Merge branch 'usb-audio-fix' of git://git.alsa-project.org/alsa-kprivate into for-linus
Diffstat (limited to 'drivers/pci/hotplug/pciehp_hpc.c')
-rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 13b2eaf7ba43..5127f3f41821 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c @@ -773,23 +773,32 @@ static void pcie_shutdown_notification(struct controller *ctrl) static int pcie_init_slot(struct controller *ctrl) { struct slot *slot; + char name[32]; slot = kzalloc(sizeof(*slot), GFP_KERNEL); if (!slot) return -ENOMEM; + snprintf(name, sizeof(name), "pciehp-%u", PSN(ctrl)); + slot->wq = alloc_workqueue(name, 0, 0); + if (!slot->wq) + goto abort; + slot->ctrl = ctrl; mutex_init(&slot->lock); INIT_DELAYED_WORK(&slot->work, pciehp_queue_pushbutton_work); ctrl->slot = slot; return 0; +abort: + kfree(slot); + return -ENOMEM; } static void pcie_cleanup_slot(struct controller *ctrl) { struct slot *slot = ctrl->slot; cancel_delayed_work(&slot->work); - flush_workqueue(pciehp_wq); + destroy_workqueue(slot->wq); kfree(slot); } |