blob: 6f5d2b93c3db3e97531b58b28fb9a3e2e892e817 [file] [log] [blame]
From 29f95bd76f6ec1eff88eec6a04191104a11a7f97 Mon Sep 17 00:00:00 2001
From: Jianqun <jay.xu@rock-chips.com>
Date: Wed, 29 Oct 2014 17:45:51 +0800
Subject: ASoC: rockchip-i2s: fix infinite loop in rockchip_snd_rxctrl
From: Jianqun <jay.xu@rock-chips.com>
commit 29f95bd76f6ec1eff88eec6a04191104a11a7f97 upstream.
We can get into an infinite loop if the I2S_CLR register fails to
clear due to a missing break statement, so add that.
Signed-off-by: Jianqun <jay.xu@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/soc/rockchip/rockchip_i2s.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -152,8 +152,10 @@ static void rockchip_snd_rxctrl(struct r
while (val) {
regmap_read(i2s->regmap, I2S_CLR, &val);
retry--;
- if (!retry)
+ if (!retry) {
dev_warn(i2s->dev, "fail to clear\n");
+ break;
+ }
}
}
}