HomeFreeBSD

sound: Remove nmix variable from mixer_oss_mixerinfo()

Description

sound: Remove nmix variable from mixer_oss_mixerinfo()

nmix is used to compare against oss_mixerinfo->dev, which is a
user-supplied value to select the mixer device (if not -1, in which case
we'll select the default one) we want to fetch the information of. It is
also used to set oss_mixerinfo->dev in case it is -1.

However, nmix is at best redundant, since we have the loop counter
already (i), and confusing at worst.

For example, suppose a system with 3 mixer devices. We call
SNDCTL_MIXERINFO with oss_mixerinfo->dev=1, meaning we want to get
information for /dev/mixer1. Suppose /dev/mixer0 detaches while inside
the loop, so we'll hit the loop's "continue" case, and nmix won't get
incremented (i.e will stay 0 for now). At this point nmix counts 1
device less, so when it reaches 1, we'll be fetching /dev/mixer2's
information instead of /dev/mixer1's.

This is also true in case the mixer device disappears prior to the call
to mixer_oss_mixerinfo().

Simply remove nmix and use the loop counter to both set
oss_mixerinfo->dev and check against it in case a non -1 value is
supplied.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45135

Details

Provenance
christosAuthored on May 9 2024, 7:07 PM
Reviewer
dev_submerge.ch
Differential Revision
D45135: sound: Remove nmix variable from mixer_oss_mixerinfo()
Parents
rG5687c71d5f36: snd_hdsp(4): RME HDSP 9632 and HDSP 9652 sound card driver.
Branches
Unknown
Tags
Unknown