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);