Page MenuHomeFreeBSD

mixer: Fix default_unit switching with mixers that have no devices
ClosedPublic

Authored by markj on Jan 15 2023, 2:30 PM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 16 2025, 11:32 AM
Unknown Object (File)
Dec 6 2025, 2:47 AM
Unknown Object (File)
Dec 6 2025, 2:37 AM
Unknown Object (File)
Nov 4 2025, 2:21 PM
Unknown Object (File)
Nov 4 2025, 2:21 PM
Unknown Object (File)
Nov 4 2025, 2:20 PM
Unknown Object (File)
Nov 4 2025, 2:18 PM
Unknown Object (File)
Oct 19 2025, 10:42 PM
Subscribers

Details

Summary

Apparently it's possible for a mixer to have no devices:

$ mixer -f /dev/mixer2
pcm2:mixer: <USB audio> at ? kld snd_uaudio (rec)

If this is the default sound device, an attempt to change the default
unit using mixer -d fails with a segfault because mod_dunit is called
with a NULL device pointer, which is dereferenced to get the parent
mixer.

ctl_dunit seems to be a dummy, i.e., we don't actually need it and can
simply pass the mixer to mod_dunit() directly. This patch removes that
structure and associated indirection to fix the crash.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 49110
Build 45999: arc lint + arc unit