summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2008-08-26 11:06:26 +0200
committerTakashi Iwai <tiwai@suse.de>2008-08-26 12:43:13 +0200
commit3d839e5b87a70effc629c1cdbf77d837ef141919 (patch)
tree9818c65b8a7fcc97ecb4faf2e614464dfcea2fd3
parentb8e6c91c74e9f0279b7c51048779b3d62da60b88 (diff)
downloadlinux-3d839e5b87a70effc629c1cdbf77d837ef141919.tar.gz
linux-3d839e5b87a70effc629c1cdbf77d837ef141919.tar.bz2
linux-3d839e5b87a70effc629c1cdbf77d837ef141919.zip
ALSA: oxygen: prevent muting of nonexistent AC97 controls
The Xonar DX does not have CD Capture controls, so we have to check that a control actually exists before muting it. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/oxygen/oxygen_mixer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
index 6facac5aed90..05eb8994c141 100644
--- a/sound/pci/oxygen/oxygen_mixer.c
+++ b/sound/pci/oxygen/oxygen_mixer.c
@@ -512,9 +512,12 @@ static int ac97_switch_get(struct snd_kcontrol *ctl,
static void mute_ac97_ctl(struct oxygen *chip, unsigned int control)
{
- unsigned int priv_idx = chip->controls[control]->private_value & 0xff;
+ unsigned int priv_idx;
u16 value;
+ if (!chip->controls[control])
+ return;
+ priv_idx = chip->controls[control]->private_value & 0xff;
value = oxygen_read_ac97(chip, 0, priv_idx);
if (!(value & 0x8000)) {
oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000);