diff options
author | oder_chiou@realtek.com <oder_chiou@realtek.com> | 2017-07-31 07:47:42 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-08-01 15:12:37 +0200 |
commit | 818010dac09183e99ff02e35836544b2e1d659f3 (patch) | |
tree | aedfcd3ca05ce1cb6bbd7975a7867f0df807c7c9 /sound/soc/codecs/rt5514-spi.c | |
parent | ASoC: rt5514: Use the IS_ENABLED to supports the module build (diff) | |
download | linux-818010dac09183e99ff02e35836544b2e1d659f3.tar.xz linux-818010dac09183e99ff02e35836544b2e1d659f3.zip |
ASoC: rt5514: Add the sanity checks of the buffer related address
The patch add the sanity checks of the buffer related address to make sure
the addresses are valid.
Signed-off-by: Oder Chiou <oder_chiou@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/rt5514-spi.c')
-rw-r--r-- | sound/soc/codecs/rt5514-spi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c index 950d1ffdc06c..6f513cc4c56c 100644 --- a/sound/soc/codecs/rt5514-spi.c +++ b/sound/soc/codecs/rt5514-spi.c @@ -173,9 +173,14 @@ static irqreturn_t rt5514_spi_irq(int irq, void *data) rt5514_dsp->buf_rp = buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24; + if (rt5514_dsp->buf_rp % 8) + rt5514_dsp->buf_rp = (rt5514_dsp->buf_rp / 8) * 8; + rt5514_dsp->buf_size = rt5514_dsp->buf_limit - rt5514_dsp->buf_base; - schedule_delayed_work(&rt5514_dsp->copy_work, 0); + if (rt5514_dsp->buf_base && rt5514_dsp->buf_limit && + rt5514_dsp->buf_rp && rt5514_dsp->buf_size) + schedule_delayed_work(&rt5514_dsp->copy_work, 0); return IRQ_HANDLED; } |