aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/wcn36xx/smd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/wcn36xx/smd.c')
-rw-r--r--drivers/net/wireless/ath/wcn36xx/smd.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
index 8f37562e0b11..750626b0e22d 100644
--- a/drivers/net/wireless/ath/wcn36xx/smd.c
+++ b/drivers/net/wireless/ath/wcn36xx/smd.c
@@ -2060,22 +2060,28 @@ static void wcn36xx_smd_rsp_process(struct wcn36xx *wcn, void *buf, size_t len)
2060 case WCN36XX_HAL_OTA_TX_COMPL_IND: 2060 case WCN36XX_HAL_OTA_TX_COMPL_IND:
2061 case WCN36XX_HAL_MISSED_BEACON_IND: 2061 case WCN36XX_HAL_MISSED_BEACON_IND:
2062 case WCN36XX_HAL_DELETE_STA_CONTEXT_IND: 2062 case WCN36XX_HAL_DELETE_STA_CONTEXT_IND:
2063 mutex_lock(&wcn->hal_ind_mutex);
2064 msg_ind = kmalloc(sizeof(*msg_ind), GFP_KERNEL); 2063 msg_ind = kmalloc(sizeof(*msg_ind), GFP_KERNEL);
2065 if (msg_ind) { 2064 if (!msg_ind)
2066 msg_ind->msg_len = len; 2065 goto nomem;
2067 msg_ind->msg = kmalloc(len, GFP_KERNEL); 2066 msg_ind->msg_len = len;
2068 memcpy(msg_ind->msg, buf, len); 2067 msg_ind->msg = kmalloc(len, GFP_KERNEL);
2069 list_add_tail(&msg_ind->list, &wcn->hal_ind_queue); 2068 if (!msg_ind->msg) {
2070 queue_work(wcn->hal_ind_wq, &wcn->hal_ind_work); 2069 kfree(msg_ind);
2071 wcn36xx_dbg(WCN36XX_DBG_HAL, "indication arrived\n"); 2070nomem:
2071 /*
2072 * FIXME: Do something smarter then just
2073 * printing an error.
2074 */
2075 wcn36xx_err("Run out of memory while handling SMD_EVENT (%d)\n",
2076 msg_header->msg_type);
2077 break;
2072 } 2078 }
2079 memcpy(msg_ind->msg, buf, len);
2080 mutex_lock(&wcn->hal_ind_mutex);
2081 list_add_tail(&msg_ind->list, &wcn->hal_ind_queue);
2082 queue_work(wcn->hal_ind_wq, &wcn->hal_ind_work);
2073 mutex_unlock(&wcn->hal_ind_mutex); 2083 mutex_unlock(&wcn->hal_ind_mutex);
2074 if (msg_ind) 2084 wcn36xx_dbg(WCN36XX_DBG_HAL, "indication arrived\n");
2075 break;
2076 /* FIXME: Do something smarter then just printing an error. */
2077 wcn36xx_err("Run out of memory while handling SMD_EVENT (%d)\n",
2078 msg_header->msg_type);
2079 break; 2085 break;
2080 default: 2086 default:
2081 wcn36xx_err("SMD_EVENT (%d) not supported\n", 2087 wcn36xx_err("SMD_EVENT (%d) not supported\n",