summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2008-06-16 14:13:52 +0200
committerTakashi Iwai <tiwai@suse.de>2008-06-16 15:16:11 +0200
commit9f9115d880ca550922434aee05ca18796c58eb99 (patch)
tree01fb4db5fa376da49a04ec55423e7dc40e928087
parentMerge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 (diff)
downloadlinux-9f9115d880ca550922434aee05ca18796c58eb99.tar.xz
linux-9f9115d880ca550922434aee05ca18796c58eb99.zip
sound: oxygen: fix NULL pointer dereference when loading snd-oxygen
Check that model->control_filter is set before trying to call it. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/oxygen/oxygen_mixer.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
index cc0cddadd589..6facac5aed90 100644
--- a/sound/pci/oxygen/oxygen_mixer.c
+++ b/sound/pci/oxygen/oxygen_mixer.c
@@ -936,11 +936,13 @@ static int add_controls(struct oxygen *chip,
for (i = 0; i < count; ++i) {
template = controls[i];
- err = chip->model->control_filter(&template);
- if (err < 0)
- return err;
- if (err == 1)
- continue;
+ if (chip->model->control_filter) {
+ err = chip->model->control_filter(&template);
+ if (err < 0)
+ return err;
+ if (err == 1)
+ continue;
+ }
if (!strcmp(template.name, "Master Playback Volume") &&
chip->model->dac_tlv) {
template.tlv.p = chip->model->dac_tlv;