From aeff44499da356ae9a9f9adf6ff5ce792e52c3fa Mon Sep 17 00:00:00 2001 From: "Pamidipati, Vijay" Date: Fri, 19 Jan 2018 22:58:32 +0530 Subject: [PATCH] qcacmn: Fix double memfree issue in MCAST2UCAST Fix the condition check for return value in DP transmit path for MCAST2UCAST Change-Id: I81220838ce1c867afdab6447a30d7d7076f0c094 CRs-Fixed: 2164244 --- dp/wifi3.0/dp_tx.c | 3 ++- dp/wifi3.0/dp_tx.h | 2 +- dp/wifi3.0/dp_tx_me.c | 13 +++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 723728ecb4..6869f75148 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -1744,7 +1744,8 @@ qdf_nbuf_t dp_tx_send(void *vap_dev, qdf_nbuf_t nbuf) DP_STATS_INC_PKT(vdev, tx_i.mcast_en.mcast_pkt, 1, qdf_nbuf_len(nbuf)); - if (dp_tx_prepare_send_me(vdev, nbuf) > 0) { + if (dp_tx_prepare_send_me(vdev, nbuf) != + QDF_STATUS_SUCCESS) { qdf_nbuf_free(nbuf); return NULL; } diff --git a/dp/wifi3.0/dp_tx.h b/dp/wifi3.0/dp_tx.h index 263df96f77..77ca69810d 100644 --- a/dp/wifi3.0/dp_tx.h +++ b/dp/wifi3.0/dp_tx.h @@ -151,7 +151,7 @@ qdf_nbuf_t dp_tx_non_std(struct cdp_vdev *vdev_handle, uint32_t dp_tx_comp_handler(struct dp_soc *soc, void *hal_srng, uint32_t quota); -int32_t +QDF_STATUS dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf); #ifndef CONVERGED_TDLS_ENABLE diff --git a/dp/wifi3.0/dp_tx_me.c b/dp/wifi3.0/dp_tx_me.c index d4c4dfa51c..ef4029fcef 100644 --- a/dp/wifi3.0/dp_tx_me.c +++ b/dp/wifi3.0/dp_tx_me.c @@ -181,11 +181,16 @@ dp_tx_me_free_descriptor(struct cdp_pdev *pdev_handle) * * Return: no of packets transmitted */ -int32_t +QDF_STATUS dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf) { - if (vdev->me_convert) - return vdev->me_convert(vdev->osif_vdev, nbuf); - return 0; + if (vdev->me_convert) { + if (vdev->me_convert(vdev->osif_vdev, nbuf) < 0) + return QDF_STATUS_E_FAILURE; + + return QDF_STATUS_SUCCESS; + } + + return QDF_STATUS_E_FAILURE; } #endif