summaryrefslogtreecommitdiff
path: root/sound
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 /sound
parent066519068ad2fbe98c7f45552b1f592903a9c8c8 (diff)
downloadlinux-3.10-9f9115d880ca550922434aee05ca18796c58eb99.tar.gz
linux-3.10-9f9115d880ca550922434aee05ca18796c58eb99.tar.bz2
linux-3.10-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>
Diffstat (limited to 'sound')
-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 cc0cddadd58..6facac5aed9 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;