summaryrefslogtreecommitdiff
path: root/sound/x86/intel_hdmi_audio.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-01-31 08:47:05 +0100
committerTakashi Iwai <tiwai@suse.de>2017-02-03 17:31:15 +0100
commit36ec0d99bbd7bb392bf64059cbda1818ee2be5a2 (patch)
tree7b25fbfaa187ac7a0ff25dc3db29a933cefa3c33 /sound/x86/intel_hdmi_audio.c
parent301cf8a9559bb372ab64da3781d3d93d1ce38213 (diff)
downloadlwn-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.c10
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);