From 2ade12f6b103f186b167d6f327d24afc7419ae4c Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Wed, 12 Jun 2024 09:26:47 +0200 Subject: [PATCH] dsp: q6lsm: Handle payload_size = sizeof(uint32_t) gracefully q6lsm_mmapcallback: payload has invalid size[4] Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/7269 Change-Id: Icf54b28b9c47585f9e56bba9e0dc417079856885 --- techpack/audio/dsp/q6lsm.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/techpack/audio/dsp/q6lsm.c b/techpack/audio/dsp/q6lsm.c index 175c8fcb1a7e..5ec4006348ea 100644 --- a/techpack/audio/dsp/q6lsm.c +++ b/techpack/audio/dsp/q6lsm.c @@ -2130,14 +2130,18 @@ static int q6lsm_mmapcallback(struct apr_client_data *data, void *priv) return 0; } - if (data->payload_size < (2 * sizeof(uint32_t))) { + if (data->payload_size >= (2 * sizeof(uint32_t))) { + command = payload[0]; + retcode = payload[1]; + } else if (data->payload_size >= sizeof(uint32_t)) { + command = payload[0]; + retcode = 0; + } else { pr_err("%s: payload has invalid size[%d]\n", __func__, data->payload_size); return -EINVAL; } - command = payload[0]; - retcode = payload[1]; sid = (data->token >> 8) & 0x0F; pr_debug("%s: opcode 0x%x command 0x%x return code 0x%x SID 0x%x\n", __func__, data->opcode, command, retcode, sid);