diff options
| author | nakayama <nakayama@NetBSD.org> | 2018-09-25 06:55:23 +0000 |
|---|---|---|
| committer | nakayama <nakayama@NetBSD.org> | 2018-09-25 06:55:23 +0000 |
| commit | 8a06e2d8b9adee5fc2cbbf915e294bda53cc373c (patch) | |
| tree | 7198ff24bc6c10bffb807fc6972d718e01cc7a01 /sys/dev | |
| parent | ded5bb90f788b86b49c5f693ba3e725d3284eada (diff) | |
pad(4) mixer has only 1 channel, so return EINVAL in the case other than 1.
This fixes the following strange output of mixerctl(1):
outputs.master=255,0
inputs.dac=255,0
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/pad/pad.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/pad/pad.c b/sys/dev/pad/pad.c index e38c36c27dd..73146493869 100644 --- a/sys/dev/pad/pad.c +++ b/sys/dev/pad/pad.c @@ -1,4 +1,4 @@ -/* $NetBSD: pad.c,v 1.57 2018/09/25 06:53:49 nakayama Exp $ */ +/* $NetBSD: pad.c,v 1.58 2018/09/25 06:55:23 nakayama Exp $ */ /*- * Copyright (c) 2007 Jared D. McNeill <jmcneill@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.57 2018/09/25 06:53:49 nakayama Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pad.c,v 1.58 2018/09/25 06:55:23 nakayama Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -781,6 +781,8 @@ pad_set_port(void *opaque, mixer_ctrl_t *mc) switch (mc->dev) { case PAD_OUTPUT_MASTER_VOLUME: case PAD_INPUT_DAC_VOLUME: + if (mc->un.value.num_channels != 1) + return EINVAL; sc->sc_swvol = mc->un.value.level[AUDIO_MIXER_LEVEL_MONO]; return 0; } @@ -800,6 +802,8 @@ pad_get_port(void *opaque, mixer_ctrl_t *mc) switch (mc->dev) { case PAD_OUTPUT_MASTER_VOLUME: case PAD_INPUT_DAC_VOLUME: + if (mc->un.value.num_channels != 1) + return EINVAL; mc->un.value.level[AUDIO_MIXER_LEVEL_MONO] = sc->sc_swvol; return 0; } |
