linux/sound/soc
Gergo Koteles f32c80d342
ASoC: tas2781: check the validity of prm_no/cfg_no
Add additional checks for program/config numbers to avoid loading from
invalid addresses.

If prm_no/cfg_no is negative, skip uploading program/config.

The tas2781-hda driver caused a NULL pointer dereference after loading
module, and before first runtime_suspend.

the state was:
tas_priv->cur_conf = -1;
tas_priv->tasdevice[i].cur_conf = 0;
program = &(tas_fmw->programs[-1]);

BUG: kernel NULL pointer dereference, address: 0000000000000010
Call Trace:
 <TASK>
 ? __die+0x23/0x70
 ? page_fault_oops+0x171/0x4e0
 ? vprintk_emit+0x175/0x2b0
 ? exc_page_fault+0x7f/0x180
 ? asm_exc_page_fault+0x26/0x30
 ? tasdevice_load_block_kernel+0x21/0x310 [snd_soc_tas2781_fmwlib]
 tasdevice_select_tuningprm_cfg+0x268/0x3a0 [snd_soc_tas2781_fmwlib]
 tasdevice_tuning_switch+0x69/0x710 [snd_soc_tas2781_fmwlib]
 tas2781_hda_playback_hook+0xd4/0x110 [snd_hda_scodec_tas2781_i2c]

Fixes: 915f5eadeb ("ASoC: tas2781: firmware lib")
CC:  <stable@vger.kernel.org>
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Link: https://msgid.link/r/523780155bfdca9bc0acd39efc79ed039454818d.1702591356.git.soyer@irl.hu
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-12-15 13:35:49 +00:00
..
adi
amd ASoC: amd: acp: Add support for a new Huawei Matebook laptop 2023-12-04 13:00:12 +00:00
apple ASoC: apple: mca: Annotate struct mca_data with __counted_by 2023-10-10 22:10:07 +01:00
atmel ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
au1x ASoC: au1x: convert not to use asoc_xxx() 2023-09-25 14:16:24 +02:00
bcm ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
cirrus ASoC: cirrus: convert not to use asoc_xxx() 2023-09-25 14:16:32 +02:00
codecs ASoC: tas2781: check the validity of prm_no/cfg_no 2023-12-15 13:35:49 +00:00
dwc Linux 6.6-rc7 2023-10-23 19:38:22 +01:00
fsl ASoC: imx-rpmsg: SND_SOC_IMX_RPMSG should depend on OF and I2C 2023-11-25 09:59:05 +00:00
generic ASoC: simple-card-utils: Make simple_util_remove() return void 2023-10-23 13:29:45 +01:00
google ASoC: google: convert not to use asoc_xxx() 2023-09-25 14:16:32 +02:00
hisilicon ASoC: hisilicon: merge DAI call back functions into ops 2023-08-14 13:10:30 +01:00
img ASoC: img: convert not to use asoc_xxx() 2023-09-25 14:16:21 +02:00
intel ASoC: Intel: soc-acpi-intel-mtl-match: Change CS35L56 prefixes to AMPn 2023-12-11 14:27:46 +00:00
jz4740 ASoC: jz4740: merge DAI call back functions into ops 2023-08-14 13:10:21 +01:00
kirkwood ASoC: kirkwood: convert not to use asoc_xxx() 2023-09-25 14:16:36 +02:00
loongson ASoC: loongson: convert not to use asoc_xxx() 2023-09-25 14:16:37 +02:00
mediatek ASoC: mediatek: mt8186_mt6366_rt1019_rt5682s: trivial: fix error messages 2023-11-03 12:52:28 +00:00
meson ASoC: meson: Make meson_card_remove() return void 2023-10-23 13:29:46 +01:00
mxs ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
pxa ASoC: Merge fixes for consistent cs42l43 schema 2023-10-10 17:07:17 +01:00
qcom ASoC: qcom: sc8280xp: Limit speaker digital volumes 2023-12-04 16:20:26 +00:00
rockchip ASoC: rockchip: Fix unused rockchip_i2s_tdm_match warning for !CONFIG_OF 2023-10-30 15:42:34 +00:00
samsung ASoC: samsung: speyside: Handle component name prefix 2023-10-26 12:15:53 +01:00
sh ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
sof ASoC: SOF: mediatek: mt8186: Revert Add Google Steelix topology compatible 2023-12-06 16:31:09 +00:00
spear
sprd ASoC: sprd: convert not to use asoc_xxx() 2023-09-25 14:16:26 +02:00
starfive ASoC: starfive/jh7110-pwmdac: Convert to platform remove callback returning void 2023-10-23 13:29:44 +01:00
sti ASoC: sti: merge DAI call back functions into ops 2023-08-14 13:10:10 +01:00
stm ASoC: Use device_get_match_data() 2023-10-09 13:13:59 +01:00
sunxi ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra ASoC: tegra: machine: Handle component name prefix 2023-10-26 12:15:54 +01:00
ti ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings 2023-10-30 13:30:20 +00:00
uniphier ASoC: uniphier: Make uniphier_aio_remove() return void 2023-10-23 13:29:48 +01:00
ux500 ASoC: ux500: convert not to use asoc_xxx() 2023-09-25 14:16:31 +02:00
xilinx
xtensa ASoC: extensa: convert not to use asoc_xxx() 2023-09-25 14:16:35 +02:00
Kconfig
Makefile
soc-ac97.c
soc-acpi.c
soc-card.c
soc-component.c ASoC: Merge fixes for consistent cs42l43 schema 2023-10-10 17:07:17 +01:00
soc-compress.c ASoC: soc-compress: convert not to use asoc_xxx() 2023-09-25 14:16:52 +02:00
soc-core.c ASoC: Merge fixes for consistent cs42l43 schema 2023-10-10 17:07:17 +01:00
soc-dai.c ASoC: Merge up workaround for CODECs that play noise on stopped stream 2023-10-27 22:33:15 +01:00
soc-dapm.c ASoC: dapm: fix clock get name 2023-11-06 10:57:03 +00:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: Merge up fixes 2023-09-26 16:14:44 +02:00
soc-jack.c ASoC: soc-jack: calling snd_soc_jack_report causes a null pointer access 2023-08-14 22:10:35 +01:00
soc-link.c ASoC: soc-link: convert not to use asoc_xxx() 2023-09-25 14:16:50 +02:00
soc-ops.c ASoC: ops: add correct range check for limiting volume 2023-12-04 16:20:25 +00:00
soc-pcm.c ASoC: soc-pcm: fix up bad merge 2023-11-23 12:41:44 +00:00
soc-topology-test.c
soc-topology.c ASoC: soc-topology: convert not to use asoc_xxx() 2023-09-25 14:16:52 +02:00
soc-utils-test.c
soc-utils.c ASoC: soc-utils: convert not to use asoc_xxx() 2023-09-25 14:16:51 +02:00