diff options
author | Bjorn Andersson <bjorn.andersson@sonymobile.com> | 2016-06-19 23:19:43 -0700 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2016-07-08 16:58:14 +0300 |
commit | 909aa60c057209dd422564884ea8828530b5f1c9 (patch) | |
tree | 9248af53033ae49bcef3a4e387603ed6fa8c98f4 /drivers/net/wireless/ath/wcn36xx/smd.c | |
parent | ce30c4fe1a229bffab3fe3594306f332e120c199 (diff) | |
download | lwn-909aa60c057209dd422564884ea8828530b5f1c9.tar.gz lwn-909aa60c057209dd422564884ea8828530b5f1c9.zip |
wcn36xx: Fold indication payload into message header
Merge the two allocation instead of separately allocating room for the
indication payload.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/wcn36xx/smd.c')
-rw-r--r-- | drivers/net/wireless/ath/wcn36xx/smd.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c index e8b630c4f11e..1a9580d72077 100644 --- a/drivers/net/wireless/ath/wcn36xx/smd.c +++ b/drivers/net/wireless/ath/wcn36xx/smd.c @@ -2229,14 +2229,8 @@ static void wcn36xx_smd_rsp_process(struct wcn36xx *wcn, void *buf, size_t len) case WCN36XX_HAL_OTA_TX_COMPL_IND: case WCN36XX_HAL_MISSED_BEACON_IND: case WCN36XX_HAL_DELETE_STA_CONTEXT_IND: - msg_ind = kmalloc(sizeof(*msg_ind), GFP_KERNEL); - if (!msg_ind) - goto nomem; - msg_ind->msg_len = len; - msg_ind->msg = kmemdup(buf, len, GFP_KERNEL); - if (!msg_ind->msg) { - kfree(msg_ind); -nomem: + msg_ind = kmalloc(sizeof(*msg_ind) + len, GFP_KERNEL); + if (!msg_ind) { /* * FIXME: Do something smarter then just * printing an error. @@ -2245,6 +2239,10 @@ nomem: msg_header->msg_type); break; } + + msg_ind->msg_len = len; + memcpy(msg_ind->msg, buf, len); + mutex_lock(&wcn->hal_ind_mutex); list_add_tail(&msg_ind->list, &wcn->hal_ind_queue); queue_work(wcn->hal_ind_wq, &wcn->hal_ind_work); @@ -2295,7 +2293,6 @@ static void wcn36xx_ind_smd_work(struct work_struct *work) msg_header->msg_type); } list_del(wcn->hal_ind_queue.next); - kfree(hal_ind_msg->msg); kfree(hal_ind_msg); mutex_unlock(&wcn->hal_ind_mutex); } |