diff options
author | Takashi Iwai <tiwai@suse.de> | 2017-01-31 08:47:05 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2017-02-03 17:31:15 +0100 |
commit | 36ec0d99bbd7bb392bf64059cbda1818ee2be5a2 (patch) | |
tree | 7b25fbfaa187ac7a0ff25dc3db29a933cefa3c33 /sound/x86/intel_hdmi_audio.c | |
parent | 301cf8a9559bb372ab64da3781d3d93d1ce38213 (diff) | |
download | lwn-36ec0d99bbd7bb392bf64059cbda1818ee2be5a2.tar.gz lwn-36ec0d99bbd7bb392bf64059cbda1818ee2be5a2.zip |
ALSA: x86: Call snd_card_register() at the end
The card registration should be done at the last stage of the probe
procedure. Otherwise user-space may access to the device before the
whole initialization is done.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/x86/intel_hdmi_audio.c')
-rw-r--r-- | sound/x86/intel_hdmi_audio.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index dfc4452afee1..82f42a6c363c 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c @@ -1586,6 +1586,7 @@ int hdmi_audio_probe(struct platform_device *devptr, pr_debug("%s @ %d:DEBUG PLUG/UNPLUG : HAD_DRV_DISCONNECTED\n", __func__, __LINE__); + intelhaddata->dev = &devptr->dev; intelhaddata->card = card; intelhaddata->card_id = hdmi_card_id; intelhaddata->card_index = card->number; @@ -1617,10 +1618,6 @@ int hdmi_audio_probe(struct platform_device *devptr, if (retval) goto err; - retval = snd_card_register(card); - if (retval) - goto err; - /* IEC958 controls */ retval = snd_ctl_add(card, snd_ctl_new1(&had_control_iec958_mask, intelhaddata)); @@ -1638,7 +1635,10 @@ int hdmi_audio_probe(struct platform_device *devptr, if (retval < 0) goto err; - intelhaddata->dev = &devptr->dev; + retval = snd_card_register(card); + if (retval) + goto err; + pm_runtime_set_active(intelhaddata->dev); pm_runtime_enable(intelhaddata->dev); |