summaryrefslogtreecommitdiff
path: root/sound/pci/emu10k1/emufx.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2018-05-15 21:25:29 +0300
committerTakashi Iwai <tiwai@suse.de>2018-05-17 09:21:23 +0300
commitdc82e52492f684dcd5ed9e4773e72dbf2203d75e (patch)
tree7dd4a15e2d6a8c038c5c66bdb533dfaa549eed8c /sound/pci/emu10k1/emufx.c
parent377a879d9832f4ba69bd6a1fc996bb4181b1e504 (diff)
downloadlinux-dc82e52492f684dcd5ed9e4773e72dbf2203d75e.tar.xz
ALSA: core: Assure control device to be registered at last
The commit 289ca025ee1d ("ALSA: Use priority list for managing device list") changed the way to register/disconnect/free devices via a single priority list. This helped to make behavior consistent, but it also changed a slight behavior change: namely, the control device is registered earlier than others, while it was supposed to be the very last one. I've put SNDRV_DEV_CONTROL in the current position as the release of ctl elements often conflict with the private ctl elements some PCM or other components may create, which often leads to a double-free. But, the order of register and disconnect should be indeed fixed as expected in the early days: the control device gets registered at last, and disconnected at first. This patch changes the priority list order to move SNDRV_DEV_CONTROL as the last guy to assure the register / disconnect order. Meanwhile, for keeping the messy resource release order, manually treat the control and lowlevel devices as last freed one. Additional note: The lowlevel device is the device where a card driver creates at probe. And, we still keep the release order control -> lowlevel, as there might be link from a control element back to a lowlevel object. Fixes: 289ca025ee1d ("ALSA: Use priority list for managing device list") Reported-by: Tzung-Bi Shih <tzungbi@google.com> Tested-by: Tzung-Bi Shih <tzungbi@google.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/emu10k1/emufx.c')
0 files changed, 0 insertions, 0 deletions