Merge "qcacmn: Possible information leak due to uninitialized data"

This commit is contained in:
Linux Build Service Account 2018-05-17 07:44:54 -07:00 • committed by Gerrit - the friendly Code Review server
commit 768d0997a3
72 changed files with 1053 additions and 156 deletions

View file

@ -1705,6 +1705,9 @@ QDF_STATUS wmi_extract_atf_token_info_ev(void *wmi_hdl, void *evt_buf,
QDF_STATUS wmi_extract_vdev_stats(void *wmi_hdl, void *evt_buf,
uint32_t index, wmi_host_vdev_stats *vdev_stats);
QDF_STATUS wmi_extract_per_chain_rssi_stats(void *wmi_hdl, void *evt_buf,
uint32_t index, struct wmi_host_per_chain_rssi_stats *rssi_stats);
QDF_STATUS wmi_extract_vdev_extd_stats(void *wmi_hdl, void *evt_buf,
uint32_t index, wmi_host_vdev_extd_stats *vdev_extd_stats);

View file

@ -605,7 +605,7 @@ struct vdev_delete_params {
};
/**
* struct channel_param - Channel paramters with all
* struct channel_param - Channel parameters with all
* info required by target.
* @chan_id: channel id
* @pwr: channel power
@ -1239,7 +1239,7 @@ struct peer_assoc_params {
/**
* struct sta_ps_params - sta ps cmd parameter
* @vdev_id: vdev id
* @param: sta ps paramter
* @param: sta ps parameter
* @value: sta ps parameter value
*/
struct sta_ps_params {
@ -1251,8 +1251,8 @@ struct sta_ps_params {
/**
* struct ap_ps_params - ap ps cmd parameter
* @vdev_id: vdev id
* @param: ap ps paramter
* @value: ap ps paramter value
* @param: ap ps parameter
* @value: ap ps parameter value
*/
struct ap_ps_params {
uint32_t vdev_id;
@ -1468,7 +1468,7 @@ struct tx_send_params {
};
/**
* struct wmi_mgmt_params - wmi mgmt cmd paramters
* struct wmi_mgmt_params - wmi mgmt cmd parameters
* @tx_frame: management tx frame
* @frm_len: frame length
* @vdev_id: vdev id
@ -1499,7 +1499,7 @@ struct wmi_mgmt_params {
};
/**
* struct wmi_offchan_data_tx_params - wmi offchan data tx cmd paramters
* struct wmi_offchan_data_tx_params - wmi offchan data tx cmd parameters
* @tx_frame: management tx frame
* @frm_len: frame length
* @vdev_id: vdev id
@ -1802,7 +1802,7 @@ struct rssi_monitor_param {
};
/**
* struct scan_mac_oui - oui paramters
* struct scan_mac_oui - oui parameters
* @oui: oui parameters
* @vdev_id: interface id
* @enb_probe_req_sno_randomization: control probe req sequence no randomization
@ -2899,7 +2899,7 @@ enum packet_filter_comp_type {
};
/**
* struct rcv_pkt_filter_params - recieve packet filter parameters
* struct rcv_pkt_filter_params - receive packet filter parameters
* @protocolLayer - protocol layer
* @cmpFlag - comparison flag
* @dataLength - data length
@ -2919,7 +2919,7 @@ struct rcv_pkt_filter_params {
};
/**
* struct rcv_pkt_filter_config - recieve packet filter info
* struct rcv_pkt_filter_config - receive packet filter info
* @filterId - filter id
* @filterType - filter type
* @numFieldParams - no of fields
@ -4044,7 +4044,7 @@ struct remove_beacon_filter_params {
/**
* struct mgmt_params - Mgmt params
* @vdev_id: vdev id
* @buf_len: lenght of frame buffer
* @buf_len: length of frame buffer
* @wbuf: frame buffer
*/
struct mgmt_params {
@ -4461,7 +4461,7 @@ struct proxy_ast_reserve_params {
* @key: pointer to key
* @key_len: length of key
* @data: pointer data buf
* @data_len: lenght of data buf
* @data_len: length of data buf
* @mode: mode
* @op: operation
* @pdev_id: pdev_id for identifying the MAC
@ -4953,8 +4953,8 @@ typedef struct {
* @self_triggers: Scheduler self triggers
* @sw_retry_failure: frames dropped due to excessive sw retries
* @illgl_rate_phy_err: illegal rate phy errors
* @pdev_cont_xretry: wal pdev continous xretry
* @pdev_tx_timeout: wal pdev continous xretry
* @pdev_cont_xretry: wal pdev continuous xretry
* @pdev_tx_timeout: wal pdev continuous xretry
* @pdev_resets: wal pdev resets
* @stateless_tid_alloc_failure: frames dropped due to non-availability of
* stateless TIDs
@ -5162,6 +5162,12 @@ typedef struct {
* */
#define WMI_HOST_WLAN_MAX_AC 4
/* The WMI_HOST_MAX_CHAINS macro cannot be changed without breaking WMI
* compatibility.
* The maximum value of number of chains
*/
#define WMI_HOST_MAX_CHAINS 8
/**
* struct wmi_host_vdev_stats - vdev stats structure
* @vdev_id: unique id identifying the VDEV, generated by the caller
@ -5263,6 +5269,21 @@ struct wmi_host_vdev_nac_rssi_event {
uint32_t rssi_seq_num;
};
/**
* struct wmi_host_per_chain_rssi_stats - VDEV nac rssi stats
* @vdev_id: unique id identifying the VDEV, generated by the caller
* @rssi_avg_beacon: per chain avg rssi for beacon
* @rssi_avg_data: per chain avg rssi for data
* @peer_macaddr: peer macaddr
*/
struct wmi_host_per_chain_rssi_stats {
uint32_t vdev_id;
int32_t rssi_avg_beacon[WMI_HOST_MAX_CHAINS];
int32_t rssi_avg_data[WMI_HOST_MAX_CHAINS];
wmi_host_mac_addr peer_macaddr;
};
/**
* struct wmi_host_peer_stats - peer stats
* @peer_macaddr: peer MAC address
@ -7854,7 +7875,7 @@ struct wmi_host_dcs_interference_param {
* struct wmi_host_fips_event_param: FIPS event param
* @pdev_id: pdev id
* @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR
* @data_len: FIPS data lenght
* @data_len: FIPS data length
* @data: pointer to data
*/
struct wmi_host_fips_event_param {

View file

@ -1290,6 +1290,10 @@ QDF_STATUS (*extract_pdev_ext_stats)(wmi_unified_t wmi_handle, void *evt_buf,
QDF_STATUS (*extract_vdev_stats)(wmi_unified_t wmi_handle, void *evt_buf,
uint32_t index, wmi_host_vdev_stats *vdev_stats);
QDF_STATUS (*extract_per_chain_rssi_stats)(wmi_unified_t wmi_handle,
void *evt_buf, uint32_t index,
struct wmi_host_per_chain_rssi_stats *rssi_stats);
QDF_STATUS (*extract_peer_stats)(wmi_unified_t wmi_handle, void *evt_buf,
uint32_t index, wmi_host_peer_stats *peer_stats);
@ -1722,7 +1726,7 @@ struct wmi_soc {
struct wmi_ops *ops;
const uint32_t *svc_ids;
uint32_t wmi_events[wmi_events_max];
/* WMI service bitmap recieved from target */
/* WMI service bitmap received from target */
uint32_t *wmi_service_bitmap;
uint32_t *wmi_ext_service_bitmap;
#ifndef CONFIG_MCL

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2018 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
@ -88,7 +88,7 @@ QDF_STATUS wmi_unified_set_user_country_code_cmd_send(void *wmi_hdl,
* @wmi_hdl: wmi handle.
* @evt_buf: event buffer
* @ch_avoid_ind: buffer pointer to save the event processed data
* @len: lenght of buffer
* @len: length of buffer
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/

View file

@ -626,7 +626,7 @@ QDF_STATUS wmi_unified_sta_ps_cmd_send(void *wmi_hdl,
/**
* wmi_crash_inject() - inject fw crash
* @wma_handle: wma handle
* @param: ponirt to crash inject paramter structure
* @param: ponirt to crash inject parameter structure
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
@ -1106,7 +1106,7 @@ QDF_STATUS wmi_unified_get_temperature(void *wmi_hdl)
/**
* wmi_unified_set_sta_uapsd_auto_trig_cmd() - set uapsd auto trigger command
* @wmi_hdl: wmi handle
* @end_set_sta_ps_mode_cmd: cmd paramter strcture
* @end_set_sta_ps_mode_cmd: cmd parameter strcture
*
* This function sets the trigger
* uapsd params such as service interval, delay interval
@ -1266,7 +1266,7 @@ QDF_STATUS wmi_extract_dcc_stats(struct wmi_unified *wmi_hdl,
*
* This function enable/disable mcc adaptive scheduler in fw.
*
* Return: QDF_STATUS_SUCCESS for sucess or error code
* Return: QDF_STATUS_SUCCESS for success or error code
*/
QDF_STATUS wmi_unified_set_enable_disable_mcc_adaptive_scheduler_cmd(
void *wmi_hdl, uint32_t mcc_adaptive_scheduler,
@ -6210,6 +6210,27 @@ QDF_STATUS wmi_extract_vdev_stats(void *wmi_hdl, void *evt_buf,
return QDF_STATUS_E_FAILURE;
}
/**
* wmi_extract_per_chain_rssi_stats() - extract rssi stats from event
* @wmi_handle: wmi handle
* @param evt_buf: pointer to event buffer
* @param index: Index into rssi stats
* @param rssi_stats: Pointer to hold rssi stats
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS wmi_extract_per_chain_rssi_stats(void *wmi_hdl, void *evt_buf,
uint32_t index, struct wmi_host_per_chain_rssi_stats *rssi_stats)
{
wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
if (wmi_handle->ops->extract_per_chain_rssi_stats)
return wmi_handle->ops->extract_per_chain_rssi_stats(wmi_handle,
evt_buf, index, rssi_stats);
return QDF_STATUS_E_FAILURE;
}
/**
* wmi_extract_rtt_hdr() - extract rtt header from event
* @wmi_handle: wmi handle

View file

@ -36,7 +36,7 @@
#include <htc_services.h>
/* pdev_id is used to distinguish the radio for which event
* is recieved. Since non-tlv target has only one radio, setting
* is received. Since non-tlv target has only one radio, setting
* default pdev_id to one to keep rest of the code using WMI APIs unfiorm.
*/
#define WMI_NON_TLV_DEFAULT_PDEV_ID WMI_HOST_PDEV_ID_0
@ -461,7 +461,7 @@ static QDF_STATUS send_setup_install_key_cmd_non_tlv(wmi_unified_t wmi_handle,
* @peer_addr: peer mac address
* @param: pointer to hold peer flush tid parameter
*
* Return: 0 for sucess or error code
* Return: 0 for success or error code
*/
static QDF_STATUS send_peer_flush_tids_cmd_non_tlv(wmi_unified_t wmi_handle,
uint8_t peer_addr[IEEE80211_ADDR_LEN],
@ -1041,7 +1041,7 @@ static QDF_STATUS send_suspend_cmd_non_tlv(wmi_unified_t wmi_handle,
wmi_buf_t wmibuf;
uint32_t len = sizeof(wmi_pdev_suspend_cmd);
/*send the comand to Target to ignore the
/*send the command to Target to ignore the
* PCIE reset so as to ensure that Host and target
* states are in sync*/
wmibuf = wmi_buf_alloc(wmi_handle, len);
@ -1329,7 +1329,7 @@ static QDF_STATUS send_set_ps_mode_cmd_non_tlv(wmi_unified_t wmi_handle,
/**
* send_crash_inject_cmd_non_tlv() - inject fw crash
* @param wmi_handle : handle to WMI.
* @param: ponirt to crash inject paramter structure
* @param: ponirt to crash inject parameter structure
*
* Return: 0 for success or return error
*/
@ -5741,7 +5741,7 @@ static QDF_STATUS extract_service_ready_non_tlv(wmi_unified_t wmi_handle,
cap->max_bcn_ie_size = ev->max_bcn_ie_size;
cap->fw_version = ev->sw_version;
cap->fw_version_1 = ev->sw_version_1;
/* Following caps not recieved in older fw/hw
/* Following caps not received in older fw/hw
* Initialize it as zero(default). */
cap->max_num_scan_channels = 0;
cap->max_supported_macs = 0;
@ -6983,7 +6983,7 @@ static QDF_STATUS extract_rtt_hdr_non_tlv(wmi_unified_t wmi_handle, void *evt_bu
/**
* copy_rtt_report_cfr
* @ev: pointer to destination event pointer
* @report_type: report type recieved in event
* @report_type: report type received in event
* @p: pointer to event data
* @hdump: pointer to destination buffer
* @hdump_len: length of dest buffer
@ -8033,7 +8033,7 @@ static QDF_STATUS extract_chan_stats_non_tlv(wmi_unified_t wmi_handle,
void *evt_buf,
uint32_t index, wmi_host_chan_stats *chan_stats)
{
/* Non-TLV doesnt have num_chan_stats */
/* Non-TLV doesn't have num_chan_stats */
return QDF_STATUS_SUCCESS;
}

View file

@ -463,7 +463,7 @@ static QDF_STATUS fake_vdev_set_param_cmd_tlv(wmi_unified_t wmi_handle,
*
* This function enable/disable mcc adaptive scheduler in fw.
*
* Return: QDF_STATUS_SUCCESS for sucess or error code
* Return: QDF_STATUS_SUCCESS for success or error code
*/
static QDF_STATUS fake_set_enable_disable_mcc_adaptive_scheduler_cmd_tlv(
wmi_unified_t wmi_handle, uint32_t mcc_adaptive_scheduler,

View file

@ -515,7 +515,7 @@ static QDF_STATUS send_hidden_ssid_vdev_restart_cmd_tlv(wmi_unified_t wmi_handle
* @peer_addr: peer mac address
* @param: pointer to hold peer flush tid parameter
*
* Return: 0 for sucess or error code
* Return: 0 for success or error code
*/
static QDF_STATUS send_peer_flush_tids_cmd_tlv(wmi_unified_t wmi,
uint8_t peer_addr[IEEE80211_ADDR_LEN],
@ -1271,7 +1271,7 @@ static QDF_STATUS send_suspend_cmd_tlv(wmi_unified_t wmi_handle,
int32_t ret;
/*
* send the comand to Target to ignore the
* send the command to Target to ignore the
* PCIE reset so as to ensure that Host and target
* states are in sync
*/
@ -1545,7 +1545,7 @@ static QDF_STATUS send_set_sta_ps_param_cmd_tlv(wmi_unified_t wmi_handle,
/**
* send_crash_inject_cmd_tlv() - inject fw crash
* @wmi_handle: wmi handle
* @param: ponirt to crash inject paramter structure
* @param: ponirt to crash inject parameter structure
*
* Return: QDF_STATUS_SUCCESS for success or return error
*/
@ -3347,6 +3347,7 @@ static QDF_STATUS send_set_mimops_cmd_tlv(wmi_unified_t wmi_handle,
break;
default:
WMI_LOGE("%s:INVALID Mimo PS CONFIG", __func__);
wmi_buf_free(buf);
return QDF_STATUS_E_FAILURE;
}
@ -4545,7 +4546,7 @@ static QDF_STATUS extract_ocb_dcc_stats_tlv(wmi_unified_t wmi_handle,
*
* This function enable/disable mcc adaptive scheduler in fw.
*
* Return: QDF_STATUS_SUCCESS for sucess or error code
* Return: QDF_STATUS_SUCCESS for success or error code
*/
static QDF_STATUS send_set_enable_disable_mcc_adaptive_scheduler_cmd_tlv(
wmi_unified_t wmi_handle, uint32_t mcc_adaptive_scheduler,
@ -10760,7 +10761,7 @@ static QDF_STATUS send_set_tdls_offchan_mode_cmd_tlv(wmi_unified_t wmi_handle,
* @wmi_handle: wmi handle
* @pwmaTdlsparams: TDLS params
*
* Return: 0 for sucess or error code
* Return: 0 for success or error code
*/
static QDF_STATUS send_update_fw_tdls_state_cmd_tlv(wmi_unified_t wmi_handle,
void *tdls_param, uint8_t tdls_state)
@ -13362,7 +13363,7 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
/* copy_hw_mode_id_in_init_cmd() - Helper routine to copy hw_mode in init cmd
* @wmi_handle: pointer to wmi handle
* @buf_ptr: pointer to current position in init command buffer
* @len: pointer to length. This will be updated with current lenght of cmd
* @len: pointer to length. This will be updated with current length of cmd
* @param: point host parameters for init command
*
* Return: Updated pointer of buf_ptr.
@ -17646,7 +17647,7 @@ static QDF_STATUS extract_ndp_confirm_tlv(wmi_unified_t wmi_handle,
event = (WMI_NDP_CONFIRM_EVENTID_param_tlvs *) data;
fixed_params = (wmi_ndp_confirm_event_fixed_param *)event->fixed_param;
WMI_LOGD("WMI_NDP_CONFIRM_EVENTID(0x%X) recieved. vdev %d, ndp_instance %d, rsp_code %d, reason_code: %d, num_active_ndps_on_peer: %d",
WMI_LOGD("WMI_NDP_CONFIRM_EVENTID(0x%X) received. vdev %d, ndp_instance %d, rsp_code %d, reason_code: %d, num_active_ndps_on_peer: %d",
WMI_NDP_CONFIRM_EVENTID, fixed_params->vdev_id,
fixed_params->ndp_instance_id, fixed_params->rsp_code,
fixed_params->reason_code,
@ -17735,7 +17736,7 @@ static QDF_STATUS extract_ndp_end_rsp_tlv(wmi_unified_t wmi_handle,
event = (WMI_NDP_END_RSP_EVENTID_param_tlvs *) data;
fixed_params = (wmi_ndp_end_rsp_event_fixed_param *)event->fixed_param;
WMI_LOGD("WMI_NDP_END_RSP_EVENTID(0x%X) recieved. transaction_id: %d, rsp_status: %d, reason_code: %d",
WMI_LOGD("WMI_NDP_END_RSP_EVENTID(0x%X) received. transaction_id: %d, rsp_status: %d, reason_code: %d",
WMI_NDP_END_RSP_EVENTID, fixed_params->transaction_id,
fixed_params->rsp_status, fixed_params->reason_code);
@ -19515,6 +19516,57 @@ static QDF_STATUS extract_vdev_stats_tlv(wmi_unified_t wmi_handle,
return QDF_STATUS_SUCCESS;
}
/**
* extract_per_chain_rssi_stats_tlv() - api to extract rssi stats from event
* buffer
* @wmi_handle: wmi handle
* @evt_buf: pointer to event buffer
* @index: Index into vdev stats
* @rssi_stats: Pointer to hold rssi stats
*
* Return: QDF_STATUS_SUCCESS for success or error code
*/
static QDF_STATUS extract_per_chain_rssi_stats_tlv(wmi_unified_t wmi_handle,
void *evt_buf, uint32_t index,
struct wmi_host_per_chain_rssi_stats *rssi_stats)
{
uint8_t *data;
wmi_rssi_stats *fw_rssi_stats;
wmi_per_chain_rssi_stats *rssi_event;
WMI_UPDATE_STATS_EVENTID_param_tlvs *param_buf;
if (!evt_buf) {
WMI_LOGE("evt_buf is null");
return QDF_STATUS_E_NULL_VALUE;
}
param_buf = (WMI_UPDATE_STATS_EVENTID_param_tlvs *) evt_buf;
rssi_event = param_buf->chain_stats;
if (index >= rssi_event->num_per_chain_rssi_stats) {
WMI_LOGE("invalid index");
return QDF_STATUS_E_INVAL;
}
data = ((uint8_t *)(&rssi_event[1])) + WMI_TLV_HDR_SIZE;
fw_rssi_stats = &((wmi_rssi_stats *)data)[index];
rssi_stats->vdev_id = fw_rssi_stats->vdev_id;
qdf_mem_copy(rssi_stats->rssi_avg_beacon,
fw_rssi_stats->rssi_avg_beacon,
sizeof(fw_rssi_stats->rssi_avg_beacon));
qdf_mem_copy(rssi_stats->rssi_avg_data,
fw_rssi_stats->rssi_avg_data,
sizeof(fw_rssi_stats->rssi_avg_data));
qdf_mem_copy(&rssi_stats->peer_macaddr,
&fw_rssi_stats->peer_macaddr,
sizeof(fw_rssi_stats->peer_macaddr));
return QDF_STATUS_SUCCESS;
}
/**
* extract_bcn_stats_tlv() - extract bcn stats from event
* @wmi_handle: wmi handle
@ -19650,7 +19702,7 @@ static QDF_STATUS extract_chan_stats_tlv(wmi_unified_t wmi_handle,
(index * sizeof(wmi_chan_stats)));
/* Non-TLV doesnt have num_chan_stats */
/* Non-TLV doesn't have num_chan_stats */
chan_stats->chan_mhz = ev->chan_mhz;
chan_stats->sampling_period_us = ev->sampling_period_us;
chan_stats->rx_clear_count = ev->rx_clear_count;
@ -22804,6 +22856,7 @@ struct wmi_ops tlv_ops = {
.extract_unit_test = extract_unit_test_tlv,
.extract_pdev_ext_stats = extract_pdev_ext_stats_tlv,
.extract_vdev_stats = extract_vdev_stats_tlv,
.extract_per_chain_rssi_stats = extract_per_chain_rssi_stats_tlv,
.extract_peer_stats = extract_peer_stats_tlv,
.extract_bcn_stats = extract_bcn_stats_tlv,
.extract_bcnflt_stats = extract_bcnflt_stats_tlv,