ASoC: Intel: Skylake: Fix IPC rx_list corruption
authorPardha Saradhi K <pardha.saradhi.kesapragada@intel.com>
Mon, 15 May 2017 14:14:29 +0000 (19:44 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 24 May 2017 17:25:12 +0000 (18:25 +0100)
commit5cd1f5c32132101955d7f0e1955249a84f9b6fd9
tree49661588fbe3b0e3b083b45bda00e654f21c6e5c
parentab1b732d53c18f26f51cad49371be3244fe67504
ASoC: Intel: Skylake: Fix IPC rx_list corruption

In SKL+ platforms, all IPC commands are serialised, i.e. the driver sends
a new IPC to DSP, only after receiving a reply from the firmware for the
current IPC.

Hence it seems apparent that there is only a single modifier of the IPC RX
List. However, during an IPC timeout case in a multithreaded environment,
there is a possibility of the list element being deleted two times if not
properly protected.

So, use spin lock save/restore to prevent rx_list corruption.

Signed-off-by: Pardha Saradhi K <pardha.saradhi.kesapragada@intel.com>
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl-sst-ipc.c