The branch releng/14.1 has been updated by christos:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=a4a473104ec4a42c66f1b9a09736954ebad43e7e

commit a4a473104ec4a42c66f1b9a09736954ebad43e7e
Author:     Christos Margiolis <chris...@freebsd.org>
AuthorDate: 2024-05-09 19:07:48 +0000
Commit:     Christos Margiolis <chris...@freebsd.org>
CommitDate: 2024-05-22 13:20:42 +0000

    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
    
    (cherry picked from commit 2f31a5eb75f1e47b5c49f574e8ce48d2c863e9d3)
    (cherry picked from commit 8b4e2ba31d1b171f688cb630f1827ec397ecaacb)
    
    Approved by:    re (cperciva)
---
 sys/dev/sound/pcm/mixer.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/sys/dev/sound/pcm/mixer.c b/sys/dev/sound/pcm/mixer.c
index 0645089ac503..31a633afb380 100644
--- a/sys/dev/sound/pcm/mixer.c
+++ b/sys/dev/sound/pcm/mixer.c
@@ -1430,7 +1430,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
 {
        struct snddev_info *d;
        struct snd_mixer *m;
-       int nmix, i;
+       int i;
 
        /*
         * If probing the device handling the ioctl, make sure it's a mixer
@@ -1441,7 +1441,6 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
 
        d = NULL;
        m = NULL;
-       nmix = 0;
 
        /*
         * There's a 1:1 relationship between mixers and PCM devices, so
@@ -1461,7 +1460,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
 
                if (d->mixer_dev != NULL && d->mixer_dev->si_drv1 != NULL &&
                    ((mi->dev == -1 && d->mixer_dev == i_dev) ||
-                   mi->dev == nmix)) {
+                   mi->dev == i)) {
                        m = d->mixer_dev->si_drv1;
                        mtx_lock(m->lock);
 
@@ -1473,7 +1472,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
                         *   sure to unlock when existing.
                         */
                        bzero((void *)mi, sizeof(*mi));
-                       mi->dev = nmix;
+                       mi->dev = i;
                        snprintf(mi->id, sizeof(mi->id), "mixer%d", i);
                        strlcpy(mi->name, m->name, sizeof(mi->name));
                        mi->modify_counter = m->modify_counter;
@@ -1537,8 +1536,7 @@ mixer_oss_mixerinfo(struct cdev *i_dev, oss_mixerinfo *mi)
                        mi->legacy_device = i;
                         */
                        mtx_unlock(m->lock);
-               } else
-                       ++nmix;
+               }
 
                PCM_UNLOCK(d);
 

Reply via email to