ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers#5247
Conversation
Other, non DAI copier widgets could have the same stream name (sname) as the ALH copier and in that case the copier->data is NULL, no alh_data is attached, which could lead to NULL pointer dereference. We could check for this NULL pointer in sof_ipc4_prepare_copier_module() and avoid the crash, but a similar loop in sof_ipc4_widget_setup_comp_dai() will miscalculate the ALH device count, causing broken audio. The correct fix is to harden the matching logic by making sure that the 1. widget is a DAI widget - so dai = w->private is valid 2. the dai (and thus the copier) is ALH copier Fixes: 0e357b5 ("ASoC: SOF: ipc4-topology: add SoundWire/ALH aggregation support") Reported-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com> Link: thesofproject/sof#9652 Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
|
That happens when the topology provides less ALH dais in the aggregation mode. For example, there are 2 amps in different links, but |
No, this happens when a module copier have the same stream name as the alh copier: thesofproject/sof#9652 (comment) That is a NULL dereference, but we also miscount the number of alh things. |
|
@ujfalusi Can you fix the checkpatch warning? |
I thought about that but it does not sound correct, the link is PR and not an issue and that PR is now updated to not set the stream name for the module.copier. |
Other, non DAI copier widgets could have the same stream name (sname) as the ALH copier and in that case the copier->data is NULL, no alh_data is attached, which could lead to NULL pointer dereference. We could check for this NULL pointer in sof_ipc4_prepare_copier_module() and avoid the crash, but a similar loop in sof_ipc4_widget_setup_comp_dai() will miscalculate the ALH device count, causing broken audio.
The correct fix is to harden the matching logic by making sure that the
Fixes: 0e357b5 ("ASoC: SOF: ipc4-topology: add SoundWire/ALH aggregation support")
Reported-by: Seppo Ingalsuo seppo.ingalsuo@linux.intel.com
Link: thesofproject/sof#9652