diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2008-08-26 11:06:26 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-08-26 12:43:13 +0200 |
commit | 3d839e5b87a70effc629c1cdbf77d837ef141919 (patch) | |
tree | 9818c65b8a7fcc97ecb4faf2e614464dfcea2fd3 /sound | |
parent | b8e6c91c74e9f0279b7c51048779b3d62da60b88 (diff) | |
download | lwn-3d839e5b87a70effc629c1cdbf77d837ef141919.tar.gz lwn-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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/oxygen/oxygen_mixer.c | 5 |
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); |