Message ID | 20250211225018.2642-1-laurentiumihalcea111@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f22ba3561daa792dd138ed543e0bf48efe0b999c |
Headers | show |
Series | ASoC: SOF: imx-common: set sdev->pdata->hw_pdata after common is alloc'd | expand |
On Tue, Feb 11, 2025 at 05:50:18PM -0500, Laurentiu Mihalcea wrote: > From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> > > '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. > > Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> > --- > sound/soc/sof/imx/imx-common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c > index 82057af1436c..c3594815e60e 100644 > --- a/sound/soc/sof/imx/imx-common.c > +++ b/sound/soc/sof/imx/imx-common.c > @@ -378,6 +378,7 @@ static int imx_probe(struct snd_sof_dev *sdev) > if (!common) > return dev_err_probe(sdev->dev, -ENOMEM, > "failed to allocate common data\n"); > + sdev->pdata->hw_pdata = common; > > common->ipc_dev = platform_device_register_data(sdev->dev, "imx-dsp", > PLATFORM_DEVID_NONE, > @@ -436,7 +437,6 @@ static int imx_probe(struct snd_sof_dev *sdev) > imx_dsp_set_data(common->ipc_handle, sdev); > > sdev->num_cores = 1; > - sdev->pdata->hw_pdata = common; > sdev->mailbox_bar = SOF_FW_BLK_TYPE_SRAM; > sdev->dsp_box.offset = get_chip_info(sdev)->ipc_info.boot_mbox_offset; > > -- > 2.34.1 >
On Wed, Feb 12, 2025 at 12:50 AM Laurentiu Mihalcea <laurentiumihalcea111@gmail.com> wrote: > > From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> > > '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. > > Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> Fixes: 651e0ed391b1 (" ASoC: SOF: imx: introduce more common structures and functions") Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
On Tue, 11 Feb 2025 17:50:18 -0500, Laurentiu Mihalcea wrote: > '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. > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next Thanks! [1/1] ASoC: SOF: imx-common: set sdev->pdata->hw_pdata after common is alloc'd commit: f22ba3561daa792dd138ed543e0bf48efe0b999c All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c index 82057af1436c..c3594815e60e 100644 --- a/sound/soc/sof/imx/imx-common.c +++ b/sound/soc/sof/imx/imx-common.c @@ -378,6 +378,7 @@ static int imx_probe(struct snd_sof_dev *sdev) if (!common) return dev_err_probe(sdev->dev, -ENOMEM, "failed to allocate common data\n"); + sdev->pdata->hw_pdata = common; common->ipc_dev = platform_device_register_data(sdev->dev, "imx-dsp", PLATFORM_DEVID_NONE, @@ -436,7 +437,6 @@ static int imx_probe(struct snd_sof_dev *sdev) imx_dsp_set_data(common->ipc_handle, sdev); sdev->num_cores = 1; - sdev->pdata->hw_pdata = common; sdev->mailbox_bar = SOF_FW_BLK_TYPE_SRAM; sdev->dsp_box.offset = get_chip_info(sdev)->ipc_info.boot_mbox_offset;