chn_shutdownall() walks channels.pcm with no lock held, and instead
relies on SD_F_REGISTERED being cleared to prevent other threads from
adding or removing channels. dsp_close() checks that flag before busying
the device, though, so a close that passed the check right before
pcm_unregister() cleared the flag can go on and modify the channel list.
Hold the sx across chn_shutdownall() and also assert it.
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation