diff options
| author | Peter Ujfalusi <peter.ujfalusi@linux.intel.com> | 2026-10-27 16:46:55 +0200 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-28 09:00:27 +0000 |
| commit | 99203e8d8968def973e82bb712ea959c6a46c16e (patch) | |
| tree | dcde29ce9ac8254e6d4fc573dd5e53a453ae5dbb /scripts/stackusage | |
| parent | e32773a86100a0a6e5e4b30c50b773de34b5c6c3 (diff) | |
| download | linux-99203e8d8968def973e82bb712ea959c6a46c16e.tar.gz linux-99203e8d8968def973e82bb712ea959c6a46c16e.zip | |
ASoC: hdac_hda: Keep runtime PM state in sync across codec remove/probe
After the codec has been removed, its runtime PM status is
RPM_SUSPENDED while hdac_hda_codec_probe() powers the codec up via
snd_hda_codec_device_new(). The pm_runtime_put()/snd_hda_power_down()
calls on probe and registration then see an already suspended device,
the codec suspend callback is not called and the codec, its HDA link and
the codec_powered bit stay set, preventing the controller from runtime
suspending.
The remove has a similar problem with the codec link accounting:
hdac_hda_codec_remove() drops the link reference taken in probe without
looking at the runtime PM state of the codec. If the codec was already
runtime suspended, the link reference has been dropped by the codec
suspend callback and the remove drops it a second time.
Resume the codec in hdac_hda_codec_remove() before disabling runtime PM
so that the link reference and the codec_powered bit are always in the
same state as after the probe, and mark the device active on probe once
the codec has been powered up.
Finally mark the codec device suspended at the end of the remove. Its
runtime PM is disabled at this point and if only the ASoC card is
unbound (e.g. by unbinding the machine driver), a following system
suspend would otherwise call the runtime suspend callback on the already
cleaned up codec via pm_runtime_force_suspend().
This is a followup patch to address Sashiko reports.
Link: https://lore.kernel.org/linux-sound/20261027083840.28813-4-peter.ujfalusi@linux.intel.com/
Fixes: c3ec8ac82105 ("ASoC: hdac_hda: fix memleak on module unload")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://patch.msgid.link/20261027144655.31988-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/stackusage')
0 files changed, 0 insertions, 0 deletions
