diff options
author | Takashi Iwai <tiwai@suse.de> | 2019-04-10 12:49:55 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2019-04-10 15:23:36 +0200 |
commit | d7a181da2dfa3190487c446042ba01e07d851c74 (patch) | |
tree | c2c281018d0a0dd56e792e0fca49af8313d5a30b /sound/hda/ext | |
parent | cae30527901d9590db0e12ace994c1d58bea87fd (diff) | |
download | linux-rpi-d7a181da2dfa3190487c446042ba01e07d851c74.tar.gz linux-rpi-d7a181da2dfa3190487c446042ba01e07d851c74.tar.bz2 linux-rpi-d7a181da2dfa3190487c446042ba01e07d851c74.zip |
ALSA: hda: Fix racy display power access
snd_hdac_display_power() doesn't handle the concurrent calls carefully
enough, and it may lead to the doubly get_power or put_power calls,
when a runtime PM and an async work get called in racy way.
This patch addresses it by reusing the bus->lock mutex that has been
used for protecting the link state change in ext bus code, so that it
can protect against racy display state changes. The initialization of
bus->lock was moved from snd_hdac_ext_bus_init() to
snd_hdac_bus_init() as well accordingly.
Testcase: igt/i915_pm_rpm/module-reload #glk-dsi
Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/hda/ext')
-rw-r--r-- | sound/hda/ext/hdac_ext_bus.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/sound/hda/ext/hdac_ext_bus.c b/sound/hda/ext/hdac_ext_bus.c index 9c37d9af3023..ec7715c6b0c0 100644 --- a/sound/hda/ext/hdac_ext_bus.c +++ b/sound/hda/ext/hdac_ext_bus.c @@ -107,7 +107,6 @@ int snd_hdac_ext_bus_init(struct hdac_bus *bus, struct device *dev, INIT_LIST_HEAD(&bus->hlink_list); bus->idx = idx++; - mutex_init(&bus->lock); bus->cmd_dma_state = true; return 0; |