| From 369b362f76d6abaabaaceea53891c2cadd1c54f6 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Tue, 11 Feb 2014 17:15:51 -0800 |
| Subject: ASoC: rsnd: tidyup original for_each_rsnd_xxx macro |
| |
| Current for_each_rsnd_xxx macro will read out-of-array's |
| memory after last loop operation. |
| It was not good C language operation, and the binary which was |
| compiled by (at least) gcc 4.8.1 is broken |
| This patch tidyup these issues |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Signed-off-by: Mark Brown <broonie@linaro.org> |
| (cherry picked from commit 00463c113b6ba6506b4f1ebb9b3c5dd249f8750f) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| sound/soc/sh/rcar/adg.c | 7 ++++--- |
| sound/soc/sh/rcar/rsnd.h | 7 ++++--- |
| 2 files changed, 8 insertions(+), 6 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c |
| index 8d3a82ef2db5..bc8961c5e986 100644 |
| --- a/sound/soc/sh/rcar/adg.c |
| +++ b/sound/soc/sh/rcar/adg.c |
| @@ -25,9 +25,10 @@ struct rsnd_adg { |
| }; |
| |
| #define for_each_rsnd_clk(pos, adg, i) \ |
| - for (i = 0, (pos) = adg->clk[i]; \ |
| - i < CLKMAX; \ |
| - i++, (pos) = adg->clk[i]) |
| + for (i = 0; \ |
| + (i < CLKMAX) && \ |
| + ((pos) = adg->clk[i]); \ |
| + i++) |
| #define rsnd_priv_to_adg(priv) ((struct rsnd_adg *)(priv)->adg) |
| |
| |
| diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h |
| index 8b66dc15fa73..9e4efb40416b 100644 |
| --- a/sound/soc/sh/rcar/rsnd.h |
| +++ b/sound/soc/sh/rcar/rsnd.h |
| @@ -216,9 +216,10 @@ struct rsnd_dai { |
| |
| #define rsnd_dai_nr(priv) ((priv)->dai_nr) |
| #define for_each_rsnd_dai(rdai, priv, i) \ |
| - for (i = 0, (rdai) = rsnd_dai_get(priv, i); \ |
| - i < rsnd_dai_nr(priv); \ |
| - i++, (rdai) = rsnd_dai_get(priv, i)) |
| + for (i = 0; \ |
| + (i < rsnd_dai_nr(priv)) && \ |
| + ((rdai) = rsnd_dai_get(priv, i)); \ |
| + i++) |
| |
| struct rsnd_dai *rsnd_dai_get(struct rsnd_priv *priv, int id); |
| int rsnd_dai_disconnect(struct rsnd_mod *mod); |
| -- |
| 2.1.2 |
| |