From 25061ab8d710197d1f1ade1dea40835258ef2ee8 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Sun, 20 Jan 2013 21:42:22 +0900 Subject: [PATCH] --- yaml --- r: 353368 b: refs/heads/master c: b5a8fe439ab343631d905a51438db3de54ba94df h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/soc/soc-core.c | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 3f0f0746a672..e730bda76508 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5d163336a77af9c1b4d6d08cbc8b1279df5f579e +refs/heads/master: b5a8fe439ab343631d905a51438db3de54ba94df diff --git a/trunk/sound/soc/soc-core.c b/trunk/sound/soc/soc-core.c index e0e8ce0c031a..02d826efd7f9 100644 --- a/trunk/sound/soc/soc-core.c +++ b/trunk/sound/soc/soc-core.c @@ -3097,9 +3097,12 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, if (!codec->using_regmap) return -EINVAL; - data = ucontrol->value.bytes.data; len = params->num_regs * codec->val_bytes; + data = kmemdup(ucontrol->value.bytes.data, len, GFP_KERNEL | GFP_DMA); + if (!data) + return -ENOMEM; + /* * If we've got a mask then we need to preserve the register * bits. We shouldn't modify the incoming data so take a @@ -3112,10 +3115,6 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, val &= params->mask; - data = kmemdup(data, len, GFP_KERNEL); - if (!data) - return -ENOMEM; - switch (codec->val_bytes) { case 1: ((u8 *)data)[0] &= ~params->mask; @@ -3137,8 +3136,7 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, ret = regmap_raw_write(codec->control_data, params->base, data, len); - if (params->mask) - kfree(data); + kfree(data); return ret; }