diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2008-06-16 14:13:52 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-06-16 15:16:11 +0200 |
commit | 9f9115d880ca550922434aee05ca18796c58eb99 (patch) | |
tree | 01fb4db5fa376da49a04ec55423e7dc40e928087 /sound/pci/oxygen | |
parent | 066519068ad2fbe98c7f45552b1f592903a9c8c8 (diff) | |
download | linux-9f9115d880ca550922434aee05ca18796c58eb99.tar.gz linux-9f9115d880ca550922434aee05ca18796c58eb99.tar.bz2 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>
Diffstat (limited to 'sound/pci/oxygen')
-rw-r--r-- | sound/pci/oxygen/oxygen_mixer.c | 12 |
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; |