Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dde332b6 authored by Krzysztof Helt's avatar Krzysztof Helt Committed by Takashi Iwai
Browse files

ALSA: opl3sa2 - Fix NULL dereference when suspending snd_opl3sa2



Fix the OOPS during a opl3sa2 card suspend
and resume if the driver is loaded but the card
is not found.

Signed-off-by: default avatarKrzysztof Helt <krzysztof.h1@wp.pl>
Cc: <stable@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 041b6237
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -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)
{
	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);
	}

	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);