From 2eb7b2e136bd70249ec5763ae7bb0cabb7ca39f7 Mon Sep 17 00:00:00 2001 From: Samuel Ahn Date: Tue, 23 Dec 2014 16:04:58 -0800 Subject: Fixed setting the DSRC channel schedule. Setting the DSRC channel schedule would not copy the schedule from user space properly. This has been fixed by updating the we_private_args structure with the appropriate parameters for iw_set_dot11p_channel_sched. There was also a crash due to a freeing a block of memory twice. This was fixed by removing the offending memory free. CRs-Fixed: 774579 Change-Id: I0a3ab2c693a0887e255ba276b0cdd1e3cbcb1a8c --- CORE/HDD/src/wlan_hdd_wext.c | 4 ++++ CORE/SERVICES/WMA/wma.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c index f1a3305c8e5f..cb999c6bd3c2 100644 --- a/CORE/HDD/src/wlan_hdd_wext.c +++ b/CORE/HDD/src/wlan_hdd_wext.c @@ -11072,6 +11072,10 @@ static const struct iw_priv_args we_private_args[] = { { WE_SET_SMPS_PARAM, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "set_smps_param" }, + { WLAN_SET_DOT11P_CHANNEL_SCHED, + IW_PRIV_TYPE_BYTE + | sizeof(struct dot11p_channel_sched), + 0, "set_dot11p" }, #ifdef DEBUG { WE_SET_FW_CRASH_INJECT, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 0611194bd8a8..1751cb7aecd6 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -23698,7 +23698,10 @@ VOS_STATUS wma_mc_process_msg(v_VOID_t *vos_context, vos_msg_t *msg) case WDA_OCB_SET_SCHED_REQUEST: wma_ocb_set_sched_req(wma_handle, (sir_ocb_set_sched_request_t *)(msg->bodyptr)); - vos_mem_free(msg->bodyptr); + /* no need to vos_mem_free(msg->bodyptr) here. This synchronous + * request is waiting on completion in + * iw_set_dot11p_channel_sched() + * which will clean up the request buffer. */ break; #ifdef FEATURE_BUS_AUTO_SUSPEND case WDA_WLAN_AUTO_SUSPEND_IND: -- cgit v1.2.3