diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-22 07:40:52 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-23 07:11:32 -0400 |
commit | 9dfdd5abcf2b350d4fdb207c0dff3194e2fd73db (patch) | |
tree | c411f3c7a5c0b2dcb507b3d6882ad012b395ae56 /sound/soc/soc-io.c | |
parent | 62d4a4b99dfd647ef88b8434334eaa7497602857 (diff) |
ASoC: io: Don't dereference regmap if we failed to get one
Avoids a crash in invalid configurations.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'sound/soc/soc-io.c')
-rw-r--r-- | sound/soc/soc-io.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sound/soc/soc-io.c b/sound/soc/soc-io.c index 44d0174b4d97..29183ef2b93d 100644 --- a/sound/soc/soc-io.c +++ b/sound/soc/soc-io.c | |||
@@ -145,10 +145,13 @@ int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec, | |||
145 | if (!codec->control_data) | 145 | if (!codec->control_data) |
146 | codec->control_data = dev_get_regmap(codec->dev, NULL); | 146 | codec->control_data = dev_get_regmap(codec->dev, NULL); |
147 | 147 | ||
148 | ret = regmap_get_val_bytes(codec->control_data); | 148 | if (codec->control_data) { |
149 | /* Errors are legitimate for non-integer byte multiples */ | 149 | ret = regmap_get_val_bytes(codec->control_data); |
150 | if (ret > 0) | 150 | /* Errors are legitimate for non-integer byte |
151 | codec->val_bytes = ret; | 151 | * multiples */ |
152 | if (ret > 0) | ||
153 | codec->val_bytes = ret; | ||
154 | } | ||
152 | break; | 155 | break; |
153 | 156 | ||
154 | default: | 157 | default: |