From e1086fad37d30c37e8216eb93d707b6ae287fc27 Mon Sep 17 00:00:00 2001 From: Himanshu Agarwal Date: Mon, 19 Oct 2015 18:05:15 +0530 Subject: [PATCH] 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 --- core/utils/nlink/src/wlan_nlink_srv.c | 13 +++++++------ core/wma/src/wma_data.c | 13 ++++++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/core/utils/nlink/src/wlan_nlink_srv.c b/core/utils/nlink/src/wlan_nlink_srv.c index 8ed084b8784b..8cd8c45a39c2 100644 --- a/core/utils/nlink/src/wlan_nlink_srv.c +++ b/core/utils/nlink/src/wlan_nlink_srv.c @@ -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, diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index 2c373c0308e9..286df551ed02 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -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);