diff options
author | Keyon Jie <yang.jie@linux.intel.com> | 2019-08-07 09:50:30 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-10-05 13:13:36 +0200 |
commit | fd8bd7dfb04f6ba11c473911e9208962adcb0019 (patch) | |
tree | 5edaa0e444fc7b29a41977264bec60fa3c72827a /sound | |
parent | 338c95ab2187eec71a8091f47eaf0a895d9ea8b2 (diff) | |
download | linux-stable-fd8bd7dfb04f6ba11c473911e9208962adcb0019.tar.gz linux-stable-fd8bd7dfb04f6ba11c473911e9208962adcb0019.tar.bz2 linux-stable-fd8bd7dfb04f6ba11c473911e9208962adcb0019.zip |
ASoC: hdac_hda: fix page fault issue by removing race
[ Upstream commit 804cbf4bb063204ca6c2471baa694548aab02ce3 ]
There is a race between hda codec device removing and the
jack-detecting work, which will lead to a page fault issue as the
latter work is accessing codec device which could be already removed.
Here add the cancellation of jack-detecting work before codecs are actually
removed to avoid the race and fix the issue.
Bug: https://github.com/thesofproject/linux/issues/1067
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20190807145030.26117-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/hdac_hda.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/soc/codecs/hdac_hda.c b/sound/soc/codecs/hdac_hda.c index 7d4940256914..91242b6f8ea7 100644 --- a/sound/soc/codecs/hdac_hda.c +++ b/sound/soc/codecs/hdac_hda.c @@ -495,6 +495,10 @@ static int hdac_hda_dev_probe(struct hdac_device *hdev) static int hdac_hda_dev_remove(struct hdac_device *hdev) { + struct hdac_hda_priv *hda_pvt; + + hda_pvt = dev_get_drvdata(&hdev->dev); + cancel_delayed_work_sync(&hda_pvt->codec.jackpoll_work); return 0; } |