Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: cs-amp-lib: Replace offsetof() with struct_size()

Use struct_size() to calculate the number of bytes to allocate and used
by 'cirrus_amp_efi_data'. Compared to offsetof(), struct_size() provides
additional compile-time checks (e.g., __must_be_array()).

Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Link: https://patch.msgid.link/20250414114528.355204-2-thorsten.blum@linux.dev
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Thorsten Blum and committed by
Mark Brown
46e7ea05 2b4ce994

+4 -3
+2 -2
sound/soc/codecs/cs-amp-lib-test.c
··· 12 12 #include <linux/gpio/driver.h> 13 13 #include <linux/list.h> 14 14 #include <linux/module.h> 15 + #include <linux/overflow.h> 15 16 #include <linux/platform_device.h> 16 17 #include <linux/random.h> 17 18 #include <sound/cs-amp-lib.h> ··· 41 40 unsigned int blob_size; 42 41 int i; 43 42 44 - blob_size = offsetof(struct cirrus_amp_efi_data, data) + 45 - sizeof(struct cirrus_amp_cal_data) * num_amps; 43 + blob_size = struct_size(priv->cal_blob, data, num_amps); 46 44 47 45 priv->cal_blob = kunit_kzalloc(test, blob_size, GFP_KERNEL); 48 46 KUNIT_ASSERT_NOT_NULL(test, priv->cal_blob);
+2 -1
sound/soc/codecs/cs-amp-lib.c
··· 11 11 #include <linux/efi.h> 12 12 #include <linux/firmware/cirrus/cs_dsp.h> 13 13 #include <linux/module.h> 14 + #include <linux/overflow.h> 14 15 #include <linux/slab.h> 15 16 #include <linux/types.h> 16 17 #include <sound/cs-amp-lib.h> ··· 148 147 dev_dbg(dev, "Calibration: Size=%d, Amp Count=%d\n", efi_data->size, efi_data->count); 149 148 150 149 if ((efi_data->count > 128) || 151 - offsetof(struct cirrus_amp_efi_data, data[efi_data->count]) > data_size) { 150 + struct_size(efi_data, data, efi_data->count) > data_size) { 152 151 dev_err(dev, "EFI cal variable truncated\n"); 153 152 ret = -EOVERFLOW; 154 153 goto err;