ASoC: rockchip-i2s: fix infinite loop in rockchip_snd_txctrl
authorSonny Rao <sonnyrao@chromium.org>
Wed, 8 Oct 2014 07:58:51 +0000 (00:58 -0700)
committerMark Brown <broonie@kernel.org>
Wed, 8 Oct 2014 11:29:38 +0000 (12:29 +0100)
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: Sonny Rao <sonnyrao@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/rockchip/rockchip_i2s.c

index 033487c9a164702bc60b1ee1073fd197dce20256..f373e37f83050a246c2d35fbed008db7cdd0b5a5 100644 (file)
@@ -108,8 +108,10 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
                        while (val) {
                                regmap_read(i2s->regmap, I2S_CLR, &val);
                                retry--;
-                               if (!retry)
+                               if (!retry) {
                                        dev_warn(i2s->dev, "fail to clear\n");
+                                       break;
+                               }
                        }
                }
        }