mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
qcacld-3.0: Take vdev ref only if vdev is not NULL
In functions ucfg_tdls_update_rx_pkt_cnt and ucfg_tdls_update_tx_pkt_cnt, driver tries to get the vdev ref, even if it is NULL. This can result in assert. Change-Id: I62b3a9b088324e06518e82203092a2ac9098ac13 CRs-Fixed: 2412095
This commit is contained in:
parent
285b898a04
commit
f28679097c
2 changed files with 16 additions and 16 deletions
|
|
@ -933,26 +933,14 @@ void ucfg_tdls_update_rx_pkt_cnt(struct wlan_objmgr_vdev *vdev,
|
|||
struct qdf_mac_addr *mac_addr,
|
||||
struct qdf_mac_addr *dest_mac_addr)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
status = wlan_objmgr_vdev_try_get_ref(vdev, WLAN_TDLS_NB_ID);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
return;
|
||||
tdls_update_rx_pkt_cnt(vdev, mac_addr, dest_mac_addr);
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_TDLS_NB_ID);
|
||||
}
|
||||
|
||||
void ucfg_tdls_update_tx_pkt_cnt(struct wlan_objmgr_vdev *vdev,
|
||||
struct qdf_mac_addr *mac_addr)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
status = wlan_objmgr_vdev_try_get_ref(vdev, WLAN_TDLS_NB_ID);
|
||||
if (status != QDF_STATUS_SUCCESS)
|
||||
return;
|
||||
tdls_update_tx_pkt_cnt(vdev, mac_addr);
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_TDLS_NB_ID);
|
||||
|
||||
}
|
||||
|
||||
QDF_STATUS ucfg_tdls_antenna_switch(struct wlan_objmgr_vdev *vdev,
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@
|
|||
#include "dp_txrx.h"
|
||||
#include "cfg_ucfg_api.h"
|
||||
#include "target_type.h"
|
||||
#include "wlan_hdd_object_manager.h"
|
||||
|
||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||
/*
|
||||
|
|
@ -924,6 +925,7 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb,
|
|||
uint8_t pkt_type = 0;
|
||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
bool is_arp = false;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
#ifdef QCA_WIFI_FTM
|
||||
if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) {
|
||||
|
|
@ -1071,7 +1073,11 @@ static netdev_tx_t __hdd_hard_start_xmit(struct sk_buff *skb,
|
|||
|
||||
mac_addr = (struct qdf_mac_addr *)skb->data;
|
||||
|
||||
ucfg_tdls_update_tx_pkt_cnt(adapter->vdev, mac_addr);
|
||||
vdev = hdd_objmgr_get_vdev(adapter);
|
||||
if (vdev) {
|
||||
ucfg_tdls_update_tx_pkt_cnt(vdev, mac_addr);
|
||||
hdd_objmgr_put_vdev(vdev);
|
||||
}
|
||||
|
||||
if (qdf_nbuf_is_tso(skb))
|
||||
adapter->stats.tx_packets += qdf_nbuf_get_tso_num_seg(skb);
|
||||
|
|
@ -1993,6 +1999,7 @@ QDF_STATUS hdd_rx_packet_cbk(void *adapter_context,
|
|||
bool wake_lock = false;
|
||||
uint8_t pkt_type = 0;
|
||||
bool track_arp = false;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
/* Sanity check on inputs */
|
||||
if (unlikely((!adapter_context) || (!rxBuf))) {
|
||||
|
|
@ -2073,9 +2080,14 @@ QDF_STATUS hdd_rx_packet_cbk(void *adapter_context,
|
|||
dest_mac_addr = (struct qdf_mac_addr *)(skb->data);
|
||||
mac_addr = (struct qdf_mac_addr *)(skb->data+QDF_MAC_ADDR_SIZE);
|
||||
|
||||
if (!hdd_is_current_high_throughput(hdd_ctx))
|
||||
ucfg_tdls_update_rx_pkt_cnt(adapter->vdev, mac_addr,
|
||||
dest_mac_addr);
|
||||
if (!hdd_is_current_high_throughput(hdd_ctx)) {
|
||||
vdev = hdd_objmgr_get_vdev(adapter);
|
||||
if (vdev) {
|
||||
ucfg_tdls_update_rx_pkt_cnt(vdev, mac_addr,
|
||||
dest_mac_addr);
|
||||
hdd_objmgr_put_vdev(vdev);
|
||||
}
|
||||
}
|
||||
|
||||
skb->dev = adapter->dev;
|
||||
skb->protocol = eth_type_trans(skb, skb->dev);
|
||||
|
|
|
|||
Loading…
Reference in a new issue