diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-03-18 08:04:36 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-03-18 08:04:36 +0100 |
commit | f1aa2986795387ff785d1c13ad9cb9159b202e87 (patch) | |
tree | 6e4dfbbeaaea06d3e9edd6b5ab1c5cfa20e5a2ab /sound | |
parent | Merge branch 'fix/hda' into for-linus (diff) | |
parent | ALSA: opl3sa2 - Fix NULL dereference when suspending snd_opl3sa2 (diff) | |
download | linux-f1aa2986795387ff785d1c13ad9cb9159b202e87.tar.xz linux-f1aa2986795387ff785d1c13ad9cb9159b202e87.zip |
Merge branch 'fix/opl3sa2-suspend' into for-linus
Diffstat (limited to 'sound')
-rw-r--r-- | sound/isa/opl3sa2.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c index 58c972b2af03..b848d1001864 100644 --- a/sound/isa/opl3sa2.c +++ b/sound/isa/opl3sa2.c @@ -550,21 +550,27 @@ static int __devinit snd_opl3sa2_mixer(struct snd_card *card) #ifdef CONFIG_PM static int snd_opl3sa2_suspend(struct snd_card *card, pm_message_t state) { - struct snd_opl3sa2 *chip = card->private_data; + if (card) { + struct snd_opl3sa2 *chip = card->private_data; - snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); - chip->wss->suspend(chip->wss); - /* power down */ - snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3); + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + chip->wss->suspend(chip->wss); + /* power down */ + snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3); + } return 0; } static int snd_opl3sa2_resume(struct snd_card *card) { - struct snd_opl3sa2 *chip = card->private_data; + struct snd_opl3sa2 *chip; int i; + if (!card) + return 0; + + chip = card->private_data; /* power up */ snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0); |