From 4477e7e4aeca0141f21f7ceba3d5b3b96795037d Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Sirasanagandla Date: Tue, 29 Jan 2019 14:05:44 -0800 Subject: [PATCH] qcacld-3.0: Fix function type for sme_ser_cmd_callback To address kernel control flow integrity (CFI) issues related to type mismatch, correct the input argument type for sme_ser_cmd_callback(). Change-Id: I3f0b5df70163eca9282d2b1c2a48203448e4f0a6 CRs-Fixed: 2402977 --- components/nan/core/src/nan_main.c | 3 +-- components/tdls/core/src/wlan_tdls_cmds_process.c | 9 +++------ components/tdls/core/src/wlan_tdls_mgmt.c | 3 +-- core/sme/inc/sme_api.h | 4 ++-- core/sme/src/common/sme_api.c | 3 +-- 5 files changed, 8 insertions(+), 14 deletions(-) diff --git a/components/nan/core/src/nan_main.c b/components/nan/core/src/nan_main.c index b7627267e414..d2f4d87bd0f2 100644 --- a/components/nan/core/src/nan_main.c +++ b/components/nan/core/src/nan_main.c @@ -204,11 +204,10 @@ static void nan_req_activated(void *in_req, uint32_t cmdtype) tx_ops->nan_datapath_req_tx(in_req, req_type); } -static QDF_STATUS nan_serialized_cb(void *cmd, +static QDF_STATUS nan_serialized_cb(struct wlan_serialization_command *ser_cmd, enum wlan_serialization_cb_reason reason) { void *req; - struct wlan_serialization_command *ser_cmd = cmd; if (!ser_cmd || !ser_cmd->umac_cmd) { nan_alert("cmd or umac_cmd is null"); diff --git a/components/tdls/core/src/wlan_tdls_cmds_process.c b/components/tdls/core/src/wlan_tdls_cmds_process.c index ce22dd309c4d..083127e8a36e 100644 --- a/components/tdls/core/src/wlan_tdls_cmds_process.c +++ b/components/tdls/core/src/wlan_tdls_cmds_process.c @@ -823,8 +823,7 @@ QDF_STATUS tdls_process_add_peer(struct tdls_add_peer_request *req) vdev = req->vdev; cmd.cmd_type = WLAN_SER_CMD_TDLS_ADD_PEER; cmd.cmd_id = 0; - cmd.cmd_cb = (wlan_serialization_cmd_callback) - tdls_add_peer_serialize_callback; + cmd.cmd_cb = tdls_add_peer_serialize_callback; cmd.umac_cmd = req; cmd.source = WLAN_UMAC_COMP_TDLS; cmd.is_high_priority = false; @@ -1039,8 +1038,7 @@ QDF_STATUS tdls_process_update_peer(struct tdls_update_peer_request *req) vdev = req->vdev; cmd.cmd_type = WLAN_SER_CMD_TDLS_ADD_PEER; cmd.cmd_id = 0; - cmd.cmd_cb = (wlan_serialization_cmd_callback) - tdls_update_peer_serialize_callback; + cmd.cmd_cb = tdls_update_peer_serialize_callback; cmd.umac_cmd = req; cmd.source = WLAN_UMAC_COMP_TDLS; cmd.is_high_priority = false; @@ -1193,8 +1191,7 @@ QDF_STATUS tdls_process_del_peer(struct tdls_oper_request *req) cmd.cmd_type = WLAN_SER_CMD_TDLS_DEL_PEER; cmd.cmd_id = 0; - cmd.cmd_cb = (wlan_serialization_cmd_callback) - tdls_del_peer_serialize_callback; + cmd.cmd_cb = tdls_del_peer_serialize_callback; cmd.umac_cmd = req; cmd.source = WLAN_UMAC_COMP_TDLS; cmd.is_high_priority = false; diff --git a/components/tdls/core/src/wlan_tdls_mgmt.c b/components/tdls/core/src/wlan_tdls_mgmt.c index c3d3cb6ba442..b11da1006c29 100644 --- a/components/tdls/core/src/wlan_tdls_mgmt.c +++ b/components/tdls/core/src/wlan_tdls_mgmt.c @@ -404,8 +404,7 @@ QDF_STATUS tdls_process_mgmt_req( cmd.cmd_type = WLAN_SER_CMD_TDLS_SEND_MGMT; /* Cmd Id not applicable for non scan cmds */ cmd.cmd_id = 0; - cmd.cmd_cb = (wlan_serialization_cmd_callback) - tdls_send_mgmt_serialize_callback; + cmd.cmd_cb = tdls_send_mgmt_serialize_callback; cmd.umac_cmd = tdls_mgmt_req; cmd.source = WLAN_UMAC_COMP_TDLS; cmd.is_high_priority = false; diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index 1bcfc7c41e85..2cf64de6114b 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -447,7 +447,7 @@ QDF_STATUS sme_set11dinfo(mac_handle_t mac_handle, QDF_STATUS sme_hdd_ready_ind(mac_handle_t mac_handle); /** * sme_ser_cmd_callback() - callback from serialization module - * @buf: serialization command buffer + * @cmd: serialization command * @reason: reason why serialization module has given this callback * * Serialization module will give callback to SME for why it triggered @@ -455,7 +455,7 @@ QDF_STATUS sme_hdd_ready_ind(mac_handle_t mac_handle); * * Return: QDF_STATUS_SUCCESS */ -QDF_STATUS sme_ser_cmd_callback(void *buf, +QDF_STATUS sme_ser_cmd_callback(struct wlan_serialization_command *cmd, enum wlan_serialization_cb_reason reason); /** diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 2206c566a5e7..8a70c164b2a8 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -538,10 +538,9 @@ QDF_STATUS sme_ser_handle_active_cmd(struct wlan_serialization_command *cmd) return status; } -QDF_STATUS sme_ser_cmd_callback(void *buf, +QDF_STATUS sme_ser_cmd_callback(struct wlan_serialization_command *cmd, enum wlan_serialization_cb_reason reason) { - struct wlan_serialization_command *cmd = buf; mac_handle_t mac_handle; struct mac_context *mac_ctx; QDF_STATUS status = QDF_STATUS_SUCCESS;