Skip to content

Commit cd59ca8

Browse files
Dan Carpentergregkh
authored andcommitted
ASoC: codec: sma1307: Fix memory corruption in sma1307_setting_loaded()
[ Upstream commit 7833810 ] The sma1307->set.header_size is how many integers are in the header (there are 8 of them) but instead of allocating space of 8 integers we allocate 8 bytes. This leads to memory corruption when we copy data it on the next line: memcpy(sma1307->set.header, data, sma1307->set.header_size * sizeof(int)); Also since we're immediately copying over the memory in ->set.header, there is no need to zero it in the allocator. Use devm_kmalloc_array() to allocate the memory instead. Fixes: 576c57e ("ASoC: sma1307: Add driver for Iron Device SMA1307") Signed-off-by: Dan Carpenter <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 7c28b31 commit cd59ca8

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

sound/soc/codecs/sma1307.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1737,9 +1737,10 @@ static void sma1307_setting_loaded(struct sma1307_priv *sma1307, const char *fil
17371737
sma1307->set.checksum = data[sma1307->set.header_size - 2];
17381738
sma1307->set.num_mode = data[sma1307->set.header_size - 1];
17391739
num_mode = sma1307->set.num_mode;
1740-
sma1307->set.header = devm_kzalloc(sma1307->dev,
1741-
sma1307->set.header_size,
1742-
GFP_KERNEL);
1740+
sma1307->set.header = devm_kmalloc_array(sma1307->dev,
1741+
sma1307->set.header_size,
1742+
sizeof(int),
1743+
GFP_KERNEL);
17431744
if (!sma1307->set.header) {
17441745
sma1307->set.status = false;
17451746
return;

0 commit comments

Comments
 (0)