summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2016-03-15 16:39:26 +0530
committerMark Brown <broonie@kernel.org>2016-03-16 10:08:43 +0000
commit077411e5eb8872736fdc5f3e7277719160918dde (patch)
treef89a253ccac2e370741711285fff19032f2af250 /sound
parent3f7f8489e25b180cf8de8a3ae3896b3f18fc4aa5 (diff)
downloadop-kernel-dev-077411e5eb8872736fdc5f3e7277719160918dde.zip
op-kernel-dev-077411e5eb8872736fdc5f3e7277719160918dde.tar.gz
ASoC: Intel: Skylake: Unmap the address last
In Skylake destructor we unmap the hardware address and then free links and streams. The stream free accesses hardware to write to registers and predictably causes oops. So change the order and unmap last in destructor. Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/intel/skylake/skl.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
index 292d51d..6e916c3 100644
--- a/sound/soc/intel/skylake/skl.c
+++ b/sound/soc/intel/skylake/skl.c
@@ -316,12 +316,13 @@ static int skl_free(struct hdac_ext_bus *ebus)
if (bus->irq >= 0)
free_irq(bus->irq, (void *)bus);
- if (bus->remap_addr)
- iounmap(bus->remap_addr);
-
snd_hdac_bus_free_stream_pages(bus);
snd_hdac_stream_free_all(ebus);
snd_hdac_link_free_all(ebus);
+
+ if (bus->remap_addr)
+ iounmap(bus->remap_addr);
+
pci_release_regions(skl->pci);
pci_disable_device(skl->pci);
OpenPOWER on IntegriCloud