diff --git a/dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c b/dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c index 151c553956..54c5e42e22 100644 --- a/dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c +++ b/dp/wifi3.0/monitor/2.0/dp_tx_mon_status_2.0.c @@ -180,6 +180,11 @@ dp_tx_mon_enqueue_mpdu_nbuf(struct dp_pdev *pdev, radiotap = qdf_nbuf_alloc(pdev->soc->osdev, MAX_MONITOR_HEADER, MAX_MONITOR_HEADER, 4, FALSE); + if (qdf_unlikely(!radiotap)) { + qdf_err("Unable to allocate radiotap buffer\n"); + qdf_nbuf_free(mpdu_nbuf); + return; + } /* append ext list */ qdf_nbuf_append_ext_list(radiotap, mpdu_nbuf, qdf_nbuf_len(mpdu_nbuf)); @@ -973,6 +978,7 @@ dp_tx_mon_alloc_mpdu(struct dp_pdev *pdev, struct dp_tx_ppdu_info *tx_ppdu_info) if (!mpdu_nbuf) { qdf_err("%s: %d No memory to allocate mpdu_nbuf!!!!!\n", __func__, __LINE__); + return; } usr_idx = TXMON_PPDU(tx_ppdu_info, cur_usr_idx); @@ -1638,7 +1644,7 @@ dp_tx_mon_process_status_tlv(struct dp_soc *soc, { struct dp_mon_pdev *mon_pdev; struct dp_mon_pdev_be *mon_pdev_be; - struct dp_pdev_tx_monitor_be *tx_mon_be; + struct dp_pdev_tx_monitor_be *tx_mon_be = NULL; uint8_t last_frag_q_idx = 0; /* sanity check */ @@ -1731,7 +1737,9 @@ dp_tx_mon_process_status_tlv(struct dp_soc *soc, free_status_buffer: dp_tx_mon_status_free_packet_buf(pdev, status_frag, end_offset, mon_desc_list_ref); - tx_mon_be->stats.status_buf_free++; + if (qdf_likely(tx_mon_be)) + tx_mon_be->stats.status_buf_free++; + qdf_frag_free(status_frag); return QDF_STATUS_E_NOMEM;