qcacld-3.0: Cleanup checks in the driver exit path

Propagation from qcacld-2.0 to qcacld-3.0

Added sanity checks for below variable before accessing in the
driver exit path.

nl_srv_sock
pdev_txrx_ctx

Change-Id: I793db21e1a6d1eded027ecbd2805494ea7610852
CRs-Fixed: 846457
This commit is contained in:
Himanshu Agarwal
2015-10-19 18:05:15 +05:30
committed by Satish Singh
parent 8784091b26
commit 754d036bb5
2 changed files with 15 additions and 11 deletions

View File

@@ -149,7 +149,7 @@ int nl_srv_unregister(tWlanNlModTypes msg_type, nl_srv_msg_callback msg_handler)
*/
int nl_srv_ucast(struct sk_buff *skb, int dst_pid, int flag)
{
int err;
int err = 0;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0))
NETLINK_CB(skb).pid = 0; /* sender's pid */
@@ -158,7 +158,8 @@ int nl_srv_ucast(struct sk_buff *skb, int dst_pid, int flag)
#endif
NETLINK_CB(skb).dst_group = 0; /* not multicast */
err = netlink_unicast(nl_srv_sock, skb, dst_pid, flag);
if (nl_srv_sock)
err = netlink_unicast(nl_srv_sock, skb, dst_pid, flag);
if (err < 0)
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_WARN,
@@ -174,7 +175,7 @@ int nl_srv_ucast(struct sk_buff *skb, int dst_pid, int flag)
*/
int nl_srv_bcast(struct sk_buff *skb)
{
int err;
int err = 0;
int flags = GFP_KERNEL;
if (in_interrupt() || irqs_disabled() || in_atomic())
@@ -187,9 +188,9 @@ int nl_srv_bcast(struct sk_buff *skb)
#endif
NETLINK_CB(skb).dst_group = WLAN_NLINK_MCAST_GRP_ID; /* destination group */
err =
netlink_broadcast(nl_srv_sock, skb, 0, WLAN_NLINK_MCAST_GRP_ID,
flags);
if (nl_srv_sock)
err = netlink_broadcast(nl_srv_sock, skb, 0,
WLAN_NLINK_MCAST_GRP_ID, flags);
if (err < 0) {
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_WARN,

View File

@@ -1668,11 +1668,14 @@ CDF_STATUS wma_tx_detach(tp_wma_handle wma_handle)
ol_txrx_pdev_handle txrx_pdev =
(ol_txrx_pdev_handle) (cds_handle->pdev_txrx_ctx);
/* Deregister with TxRx for Tx Mgmt completion call back */
for (frame_index = 0; frame_index < FRAME_INDEX_MAX; frame_index++)
ol_txrx_mgmt_tx_cb_set(txrx_pdev, frame_index, NULL, NULL,
txrx_pdev);
if (txrx_pdev) {
/* Deregister with TxRx for Tx Mgmt completion call back */
for (frame_index = 0; frame_index < FRAME_INDEX_MAX;
frame_index++) {
ol_txrx_mgmt_tx_cb_set(txrx_pdev, frame_index, NULL,
NULL, txrx_pdev);
}
}
/* Destroy Tx Frame Complete event */
cdf_event_destroy(&wma_handle->tx_frm_download_comp_event);