diff options
author | Vinod Koul <vinod.koul@intel.com> | 2016-03-15 16:39:26 +0530 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-03-16 10:08:43 +0000 |
commit | 077411e5eb8872736fdc5f3e7277719160918dde (patch) | |
tree | f89a253ccac2e370741711285fff19032f2af250 /sound | |
parent | 3f7f8489e25b180cf8de8a3ae3896b3f18fc4aa5 (diff) | |
download | op-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.c | 7 |
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); |