summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-09-27 15:56:20 +0200
committerMark Brown <broonie@linaro.org>2013-09-27 15:56:20 +0200
commit92396e78d339e1ba8c50e69fee96197a56d3911a (patch)
tree7ccf274d046c0afe3bf24d6344e45adb51af1022 /sound
parentMerge remote-tracking branch 'asoc/fix/88pm860x' into asoc-linus (diff)
parentASoC: ab8500-codec: info leak in anc_status_control_put() (diff)
downloadlinux-92396e78d339e1ba8c50e69fee96197a56d3911a.tar.xz
linux-92396e78d339e1ba8c50e69fee96197a56d3911a.zip
Merge remote-tracking branch 'asoc/fix/ab8500' into asoc-linus
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/ab8500-codec.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/soc/codecs/ab8500-codec.c b/sound/soc/codecs/ab8500-codec.c
index b8ba0adacfce..80555d7551e6 100644
--- a/sound/soc/codecs/ab8500-codec.c
+++ b/sound/soc/codecs/ab8500-codec.c
@@ -1225,13 +1225,18 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(codec->dev);
struct device *dev = codec->dev;
bool apply_fir, apply_iir;
- int req, status;
+ unsigned int req;
+ int status;
dev_dbg(dev, "%s: Enter.\n", __func__);
mutex_lock(&drvdata->anc_lock);
req = ucontrol->value.integer.value[0];
+ if (req >= ARRAY_SIZE(enum_anc_state)) {
+ status = -EINVAL;
+ goto cleanup;
+ }
if (req != ANC_APPLY_FIR_IIR && req != ANC_APPLY_FIR &&
req != ANC_APPLY_IIR) {
dev_err(dev, "%s: ERROR: Unsupported status to set '%s'!\n",