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: SOF: imx-common: set sdev->pdata->hw_pdata after common is alloc'd

'imx_unregister_action' uses 'sdev->pdata->hw_pdata' to fetch the pointer
to the common data structure. As such, if 'sdev->pdata->hw_pdata' is not
set before adding 'imx_unregister_action' to the devres list, we risk
derefrencing a NULL pointer if any of the calls between
'devm_add_action_or_reset' and 'sdev->pdata->hw_pdata = common' fails.

Set 'sdev->pdata->hw_pdata' to point to 'common' as soon as 'common' is
allocated.

Fixes: 651e0ed391b1 (" ASoC: SOF: imx: introduce more common structures and functions")
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>

Link: https://patch.msgid.link/20250211225018.2642-1-laurentiumihalcea111@gmail.com
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Laurentiu Mihalcea and committed by
Mark Brown
f22ba356 21aa330f

+1 -1
+1 -1
sound/soc/sof/imx/imx-common.c
··· 378 378 if (!common) 379 379 return dev_err_probe(sdev->dev, -ENOMEM, 380 380 "failed to allocate common data\n"); 381 + sdev->pdata->hw_pdata = common; 381 382 382 383 common->ipc_dev = platform_device_register_data(sdev->dev, "imx-dsp", 383 384 PLATFORM_DEVID_NONE, ··· 437 436 imx_dsp_set_data(common->ipc_handle, sdev); 438 437 439 438 sdev->num_cores = 1; 440 - sdev->pdata->hw_pdata = common; 441 439 sdev->mailbox_bar = SOF_FW_BLK_TYPE_SRAM; 442 440 sdev->dsp_box.offset = get_chip_info(sdev)->ipc_info.boot_mbox_offset; 443 441