[PATCH 2/2] ALSA: hda/tas2781: Fix PM refcount unbalance at tas2781_hda_bind()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx>
Closes: https://lore.kernel.org/r/9f910785-e856-1539-e3e4-c9817af5fe67@xxxxxxxxxxxxxxx
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
 sound/pci/hda/tas2781_hda_i2c.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/sound/pci/hda/tas2781_hda_i2c.c b/sound/pci/hda/tas2781_hda_i2c.c
index 0968ae915fd0..aa9ce3837336 100644
--- a/sound/pci/hda/tas2781_hda_i2c.c
+++ b/sound/pci/hda/tas2781_hda_i2c.c
@@ -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,
-- 
2.35.3




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux