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: codecs: ab8500: Fix casting of private data

ab8500_filter_controls[i].private_value is initialized using

.private_value = (unsigned long)&(struct filter_control)
{.count = xcount, .min = xmin, .max = xmax}

thus it's a pointer to a struct filter_control casted to unsigned long.

So to get back that pointer .private_data must be cast back, not its
address.

Fixes: 679d7abdc754 ("ASoC: codecs: Add AB8500 codec-driver")
Signed-off-by: Christian A. Ehrhardt <christian.ehrhardt@codasip.com>
Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Link: https://patch.msgid.link/20260428192255.2294705-2-u.kleine-koenig@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Christian A. Ehrhardt and committed by
Mark Brown
a201aef1 be102efb

+3 -3
+3 -3
sound/soc/codecs/ab8500-codec.c
··· 2496 2496 return status; 2497 2497 } 2498 2498 fc = (struct filter_control *) 2499 - &ab8500_filter_controls[AB8500_FILTER_ANC_FIR].private_value; 2499 + ab8500_filter_controls[AB8500_FILTER_ANC_FIR].private_value; 2500 2500 drvdata->anc_fir_values = (long *)fc->value; 2501 2501 fc = (struct filter_control *) 2502 - &ab8500_filter_controls[AB8500_FILTER_ANC_IIR].private_value; 2502 + ab8500_filter_controls[AB8500_FILTER_ANC_IIR].private_value; 2503 2503 drvdata->anc_iir_values = (long *)fc->value; 2504 2504 fc = (struct filter_control *) 2505 - &ab8500_filter_controls[AB8500_FILTER_SID_FIR].private_value; 2505 + ab8500_filter_controls[AB8500_FILTER_SID_FIR].private_value; 2506 2506 drvdata->sid_fir_values = (long *)fc->value; 2507 2507 2508 2508 snd_soc_dapm_disable_pin(dapm, "ANC Configure Input");