diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-06-03 20:09:14 +0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-06-06 15:48:42 +0400 |
commit | 78bf3c9ab69a957dfa58e521ce7fca056c86b980 (patch) | |
tree | 37a0b57fe0bce39105a869fe5c7bfaefac4ccca4 /sound | |
parent | 51b3b5cabb1d7d6ca12416652e2df2e01eb61fb9 (diff) | |
download | linux-78bf3c9ab69a957dfa58e521ce7fca056c86b980.tar.xz |
ASoC: Enforce the mask in snd_soc_update_bits()
Avoids issues if someone does a read followed by restore and doesn't mask
out only the bits being updated.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/soc-core.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 13a40fc78d32..c53f5d589591 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -2323,7 +2323,7 @@ int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, return ret; old = ret; - new = (old & ~mask) | value; + new = (old & ~mask) | (value & mask); change = old != new; if (change) { ret = snd_soc_write(codec, reg, new); |