ASoC: SOF: Intel: Do not use resource managed allocation for ipc4_data
Manage the ipc4_data allocation in code instead of devm since the ops_init might be called more than once due to IPC type fallback. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20231129125327.23708-13-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a5a65437b0
commit
9b6896538e
@ -55,7 +55,7 @@ int sof_apl_ops_init(struct snd_sof_dev *sdev)
|
||||
if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) {
|
||||
struct sof_ipc4_fw_data *ipc4_data;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -402,7 +402,7 @@ int sof_cnl_ops_init(struct snd_sof_dev *sdev)
|
||||
if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) {
|
||||
struct sof_ipc4_fw_data *ipc4_data;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -621,6 +621,9 @@ void hda_ops_free(struct snd_sof_dev *sdev)
|
||||
|
||||
if (!hda_use_tplg_nhlt)
|
||||
intel_nhlt_free(ipc4_data->nhlt);
|
||||
|
||||
kfree(sdev->private);
|
||||
sdev->private = NULL;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_ops_free, SND_SOC_SOF_INTEL_HDA_COMMON);
|
||||
|
@ -123,7 +123,7 @@ int sof_icl_ops_init(struct snd_sof_dev *sdev)
|
||||
if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) {
|
||||
struct sof_ipc4_fw_data *ipc4_data;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -120,7 +120,7 @@ int sof_lnl_ops_init(struct snd_sof_dev *sdev)
|
||||
|
||||
sof_lnl_ops.get_stream_position = mtl_dsp_get_stream_hda_link_position;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(struct sof_ipc4_fw_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(struct sof_ipc4_fw_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -709,7 +709,7 @@ int sof_mtl_ops_init(struct snd_sof_dev *sdev)
|
||||
|
||||
sof_mtl_ops.get_stream_position = mtl_dsp_get_stream_hda_link_position;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(struct sof_ipc4_fw_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(struct sof_ipc4_fw_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -62,7 +62,7 @@ int sof_skl_ops_init(struct snd_sof_dev *sdev)
|
||||
/* probe/remove/shutdown */
|
||||
sof_skl_ops.shutdown = hda_dsp_shutdown;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -82,7 +82,7 @@ int sof_tgl_ops_init(struct snd_sof_dev *sdev)
|
||||
if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) {
|
||||
struct sof_ipc4_fw_data *ipc4_data;
|
||||
|
||||
sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL);
|
||||
sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL);
|
||||
if (!sdev->private)
|
||||
return -ENOMEM;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user