diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-05-23 15:36:37 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-05-24 13:01:18 +0100 |
commit | 07597910a9c02c0ce33b779b5c24c5407ee7bd48 (patch) | |
tree | bda433e23f8885073ae47f24bd9d70ccb1c9e8f6 | |
parent | b8bb535ae43ac42588a26d0781cb0f8360269dd5 (diff) | |
download | linux-stable-07597910a9c02c0ce33b779b5c24c5407ee7bd48.tar.gz linux-stable-07597910a9c02c0ce33b779b5c24c5407ee7bd48.tar.bz2 linux-stable-07597910a9c02c0ce33b779b5c24c5407ee7bd48.zip |
ASoC: dapm: Use struct_size() in krealloc()
One of the more common cases of allocation size calculations is finding the
size of a structure that has a zero-sized array at the end, along with
memory for some number of elements for that array. For example:
struct foo {
int stuff;
struct boo entry[];
};
instance = krealloc(instance, sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, use the new
struct_size() helper:
instance = krealloc(instance, struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/soc-dapm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index b71ddaca70e5..511ed84b147b 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -487,7 +487,8 @@ static int dapm_kcontrol_add_widget(struct snd_kcontrol *kcontrol, n = 1; new_wlist = krealloc(data->wlist, - sizeof(*new_wlist) + sizeof(widget) * n, GFP_KERNEL); + struct_size(new_wlist, widgets, n), + GFP_KERNEL); if (!new_wlist) return -ENOMEM; |