From 21b92fa80b6f77efc280e158b63c0e925998b562 Mon Sep 17 00:00:00 2001 From: Bapiraju Alla Date: Tue, 22 Dec 2020 21:26:31 +0530 Subject: [PATCH] qcacmn: Don't consider WMI_MIN_HEAD_ROOM in WMI msg length Currently, Host driver assumes WMI_MIN_HEAD_ROOM is part of WMI messages and Validations are done accordingly. But this WMI_MIN_HEAD_ROOM is not considered in the firmware. Because of this host may drop valid events. To avoid this, Don't consider WMI_MIN_HEAD_ROOM while validating WMI msg length. Change-Id: I5f1fe12cfae570e636defb8a4a46ec154f988195 CRs-Fixed: 2844982 --- wmi/src/wmi_unified.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/wmi/src/wmi_unified.c b/wmi/src/wmi_unified.c index 15487b721d49..e99e07eadfae 100644 --- a/wmi/src/wmi_unified.c +++ b/wmi/src/wmi_unified.c @@ -1646,7 +1646,7 @@ wmi_buf_alloc_debug(wmi_unified_t wmi_handle, uint32_t len, { wmi_buf_t wmi_buf; - if (roundup(len + WMI_MIN_HEAD_ROOM, 4) > wmi_handle->max_msg_len) { + if (roundup(len + sizeof(WMI_CMD_HDR), 4) > wmi_handle->max_msg_len) { QDF_ASSERT(0); return NULL; } @@ -1687,7 +1687,7 @@ wmi_buf_t wmi_buf_alloc_fl(wmi_unified_t wmi_handle, uint32_t len, { wmi_buf_t wmi_buf; - if (roundup(len + WMI_MIN_HEAD_ROOM, 4) > wmi_handle->max_msg_len) { + if (roundup(len + sizeof(WMI_CMD_HDR), 4) > wmi_handle->max_msg_len) { QDF_DEBUG_PANIC("Invalid length %u (via %s:%u)", len, func, line); return NULL; @@ -2557,18 +2557,11 @@ static int __wmi_process_qmi_fw_event(void *wmi_cb_ctx, void *buf, int len) struct wmi_unified *wmi_handle = wmi_cb_ctx; wmi_buf_t evt_buf; uint32_t evt_id; - int wmi_msg_len; - if (!wmi_handle || !buf || (len < WMI_MIN_HEAD_ROOM)) + if (!wmi_handle || !buf) return -EINVAL; - /** - * Subtract WMI_MIN_HEAD_ROOM from received QMI event length to get - * wmi message length - */ - wmi_msg_len = len - WMI_MIN_HEAD_ROOM; - - evt_buf = wmi_buf_alloc(wmi_handle, wmi_msg_len); + evt_buf = wmi_buf_alloc(wmi_handle, len); if (!evt_buf) return -ENOMEM;