From 863538c50a82478f239d634c022bb0b2d0149813 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sun, 11 Dec 2022 10:19:53 -0500 Subject: [Bug Fix] dsp_proc_enable init race / crash haas surround is causing a seg fault it appears process is null see https://www.rockbox.org/tracker/task/13382 for details when the low_latency_callback is enabled it happens less frequently lets default to an empty process that way there are no NULL pointers to call Change-Id: Ib72ba1a58cbb20cef04b5ea50964adadeee74a75 --- lib/rbcodec/dsp/dsp_core.c | 9 ++++++++- lib/rbcodec/dsp/dsp_proc_entry.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/rbcodec/dsp/dsp_core.c b/lib/rbcodec/dsp/dsp_core.c index b0e9c8a304..5a08ce8e37 100644 --- a/lib/rbcodec/dsp/dsp_core.c +++ b/lib/rbcodec/dsp/dsp_core.c @@ -214,6 +214,13 @@ dsp_proc_enable_delink(struct dsp_config *dsp, uint32_t mask) } } +static void dsp_empty_process(struct dsp_proc_entry *this, struct dsp_buffer **buf_p) +{ + (void)this; + (void)buf_p; + logf("%s", __func__); +} + void dsp_proc_enable(struct dsp_config *dsp, enum dsp_proc_ids id, bool enable) { @@ -236,7 +243,7 @@ void dsp_proc_enable(struct dsp_config *dsp, enum dsp_proc_ids id, { /* New entry - set defaults */ s->proc_entry.data = 0; - s->proc_entry.process = NULL; + s->proc_entry.process = dsp_empty_process; } enabled = proc_db_entry(s)->configure(&s->proc_entry, dsp, diff --git a/lib/rbcodec/dsp/dsp_proc_entry.h b/lib/rbcodec/dsp/dsp_proc_entry.h index a4f7b71f9c..0a65792207 100644 --- a/lib/rbcodec/dsp/dsp_proc_entry.h +++ b/lib/rbcodec/dsp/dsp_proc_entry.h @@ -103,7 +103,7 @@ typedef void (*dsp_proc_fn_type)(struct dsp_proc_entry *this, * * default settings: * .data = 0 - * .process = NULL + * .process = dsp_empty_process (dsp_core.c) * * DSP_PROC_INIT handler just has to change what it needs to change. It may * also be modified at any time to implement the stage's demands. -- cgit v1.2.3