| 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; |
| + } |
| } |
| } |
| } |