mirror of https://gitee.com/openkylin/linux.git
ALSA: hda - Don't call vmaster hook when bus->shutdown is set
The flag bus->shutdown implies that the control elements might have been already destroyed. When a codec is resumed at this state and tries to call vmaster hook (e.g. in snd_hda_gen_init()), it would refer to a non-existing object, resulting in Oops in the end. This patch just adds a check of the flag in the caller side for avoiding such a crash. Though, the best would be to clear hook->sw_kctl by the destructor of the corresponding ctl element, but vmaster uses its own private_free, it can't be done easily. So let it be for a while. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
83f26ad2c9
commit
594813ffa7
|
@ -2784,6 +2784,11 @@ void snd_hda_sync_vmaster_hook(struct hda_vmaster_mute_hook *hook)
|
|||
{
|
||||
if (!hook->hook || !hook->codec)
|
||||
return;
|
||||
/* don't call vmaster hook in the destructor since it might have
|
||||
* been already destroyed
|
||||
*/
|
||||
if (hook->codec->bus->shutdown)
|
||||
return;
|
||||
switch (hook->mute_mode) {
|
||||
case HDA_VMUTE_FOLLOW_MASTER:
|
||||
snd_ctl_sync_vmaster_hook(hook->sw_kctl);
|
||||
|
|
Loading…
Reference in New Issue