diff options
| author | Christos Margiolis <christos@FreeBSD.org> | 2025-10-22 11:50:55 +0000 |
|---|---|---|
| committer | Christos Margiolis <christos@FreeBSD.org> | 2025-10-22 11:50:55 +0000 |
| commit | 70b34fbdbea13c006a724844caa53f59e0e53bd0 (patch) | |
| tree | 005839e58705ab0515dcf503418e5d222656c75f | |
| parent | daac364e611532c7bfd4bb20f9fea8d365496aa1 (diff) | |
sndctl(8): Modify vchans only on supported directions
Currently mod_play_vchans() and mod_rec_vchans() run unconditionally,
even if the direction (playback, recording) is not supported by the
device. This results in the "autoconv" (see mod_autoconv()) control
failing when run on simplex devices, because we'll be trying to modify
vchans on an unsupported direction.
Test whether the direction is supported and silently move on if it
isn't.
Sponsored by: The FreeBSD Foundation
MFC after: 4 days
Differential Revision: https://reviews.freebsd.org/D53233
| -rw-r--r-- | usr.sbin/sndctl/sndctl.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/usr.sbin/sndctl/sndctl.c b/usr.sbin/sndctl/sndctl.c index 156c845481c5..6977f0ab0ebe 100644 --- a/usr.sbin/sndctl/sndctl.c +++ b/usr.sbin/sndctl/sndctl.c @@ -830,6 +830,8 @@ mod_play_vchans(struct snd_dev *dp, void *arg) if (dp->from_user) return (-1); + if (!dp->play.pchans) + return (0); snprintf(buf, sizeof(buf), "dev.pcm.%d.play.vchans", dp->unit); @@ -873,6 +875,8 @@ mod_rec_vchans(struct snd_dev *dp, void *arg) if (dp->from_user) return (-1); + if (!dp->rec.pchans) + return (0); snprintf(buf, sizeof(buf), "dev.pcm.%d.rec.vchans", dp->unit); |
