From 9ff4c54c25904cae58d997149a9644b199d07489 Mon Sep 17 00:00:00 2001 From: Chaithanya Garrepalli Date: Mon, 7 Jan 2019 23:03:09 +0530 Subject: [PATCH] qcacmn: Avoid NULL dereference in peer unmap handler Avoid NULL dereference in peer unmap handler Change-Id: I4dfc6e5fe4c254c6534af187b705efdab706b366 CRs-fixed: 2369001 --- dp/wifi3.0/dp_peer.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index be5ea35cc2cd..388464f46617 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -779,12 +779,6 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry) struct dp_peer *peer = ast_entry->peer; uint16_t peer_id = peer->peer_ids[0]; - QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, - "%s: ast_entry->type: %d pdevid: %u vdev: %u mac_addr: %pM next_hop: %u peer_mac: %pM\n", - __func__, ast_entry->type, peer->vdev->pdev->pdev_id, - peer->vdev->vdev_id, ast_entry->mac_addr.raw, - ast_entry->next_hop, ast_entry->peer->mac_addr.raw); - dp_peer_ast_send_wds_del(soc, ast_entry); /* @@ -999,6 +993,12 @@ void dp_peer_ast_send_wds_del(struct dp_soc *soc, if (ast_entry->delete_in_progress) return; + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_TRACE, + "%s: ast_entry->type: %d pdevid: %u vdev: %u mac_addr: %pM next_hop: %u peer_mac: %pM\n", + __func__, ast_entry->type, peer->vdev->pdev->pdev_id, + peer->vdev->vdev_id, ast_entry->mac_addr.raw, + ast_entry->next_hop, ast_entry->peer->mac_addr.raw); + if (ast_entry->next_hop && ast_entry->type != CDP_TXRX_AST_TYPE_WDS_HM_SEC) cdp_soc->ol_ops->peer_del_wds_entry(peer->vdev->osif_vdev, @@ -1461,10 +1461,12 @@ dp_rx_peer_unmap_handler(void *soc_handle, uint16_t peer_id, peer->mac_addr.raw, mac_addr, vdev_id, is_wds); - if (!is_wds) { - qdf_spin_unlock_bh(&soc->ast_lock); + qdf_spin_unlock_bh(&soc->ast_lock); + + if (!is_wds) goto peer_unmap; - } + + return; } qdf_spin_unlock_bh(&soc->ast_lock);