ALSA: hda/tas2781: Fix PM refcount unbalance at tas2781_hda_bind()
authorTakashi Iwai <tiwai@suse.de>
Sun, 20 Aug 2023 17:26:35 +0000 (19:26 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 21 Aug 2023 14:20:55 +0000 (16:20 +0200)
The error path of tas2781_hda_bind() needs to release PM refcount as
well.  Modify the code flow to handle properly.

Fixes: 5be27f1e3ec9 ("ALSA: hda/tas2781: Add tas2781 HDA driver")
Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Closes: https://lore.kernel.org/r/9f910785-e856-1539-e3e4-c9817af5fe67@linux.intel.com
Link: https://lore.kernel.org/r/20230820172635.22236-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/tas2781_hda_i2c.c

index 0968ae9..aa9ce38 100644 (file)
@@ -608,15 +608,13 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
        strscpy(comps->name, dev_name(dev), sizeof(comps->name));
 
        ret = tascodec_init(tas_priv, codec, tasdev_fw_ready);
-       if (ret)
-               return ret;
-
-       comps->playback_hook = tas2781_hda_playback_hook;
+       if (!ret)
+               comps->playback_hook = tas2781_hda_playback_hook;
 
        pm_runtime_mark_last_busy(dev);
        pm_runtime_put_autosuspend(dev);
 
-       return 0;
+       return ret;
 }
 
 static void tas2781_hda_unbind(struct device *dev,