diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index 5bd1eaffd8..6add43315a 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1378,6 +1378,9 @@ static void hdd_is_interface_down_during_ssr(struct hdd_context *hdd_ctx) adapter = pnext; } + if (!wlansap_is_gp_sap_ctx_empty()) + QDF_DEBUG_PANIC("gp_sap_ctx leak"); + hdd_exit(); } diff --git a/core/sap/inc/sap_api.h b/core/sap/inc/sap_api.h index 7891a934d8..ca423dc72b 100644 --- a/core/sap/inc/sap_api.h +++ b/core/sap/inc/sap_api.h @@ -799,6 +799,14 @@ bool wlansap_is_channel_in_nol_list(struct sap_context *sap_ctx, uint8_t channelNumber, ePhyChanBondState chanBondState); +/** + * wlansap_is_gp_sap_ctx_empty() - This API checks if gp_sap_ctx + * is empty + * + * Return: TRUE if empty, FALSE otherwise + */ +bool wlansap_is_gp_sap_ctx_empty(void); + /** * wlansap_is_channel_leaking_in_nol() - This API checks if channel is leaking * in nol list diff --git a/core/sap/src/sap_module.c b/core/sap/src/sap_module.c index a5b4086dcc..8fb46eb8f0 100644 --- a/core/sap/src/sap_module.c +++ b/core/sap/src/sap_module.c @@ -369,6 +369,23 @@ bool wlansap_is_channel_in_nol_list(struct sap_context *sap_ctx, chanBondState); } +bool wlansap_is_gp_sap_ctx_empty(void) +{ + int8_t i; + bool is_empty = TRUE; + + qdf_mutex_acquire(&sap_context_lock); + for (i = 0; i < SAP_MAX_NUM_SESSION; i++) { + if (NULL != gp_sap_ctx[i]) { + is_empty = FALSE; + break; + } + } + qdf_mutex_release(&sap_context_lock); + + return is_empty; +} + static QDF_STATUS wlansap_mark_leaking_channel(struct wlan_objmgr_pdev *pdev, uint8_t *leakage_adjusted_lst, uint8_t chan_bw)