qcacmn: Reset delayline even for zero bin5 radars
It is valid for dfs->dfs_rinfo.rn_numbin5radars to be 0. If it is zero then the malloc returns NULL and we skip dfs_reset_alldelaylines. Skip dfs_reset_alldelaylines in case of non-zero malloc failures. Also move the dfs->dfs_b5radars NULL check just before accessing dfs->dfs_b5radars memory. Change-Id: I0aba9d2357672e2c5bc6c5c3857cb06194381e2f CRs-Fixed: 2215846
This commit is contained in:

gecommit door
nshrivas

bovenliggende
73deb9aa73
commit
2ed63d0e1a
@@ -61,12 +61,6 @@ void dfs_reset_alldelaylines(struct wlan_dfs *dfs)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(dfs->dfs_b5radars)) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "pl==NULL, b5radars=%pK",
|
||||
dfs->dfs_b5radars);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reset the pulse log. */
|
||||
pl->pl_firstelem = pl->pl_numelems = 0;
|
||||
pl->pl_lastelem = DFS_MAX_PULSE_BUFFER_MASK;
|
||||
@@ -78,6 +72,12 @@ void dfs_reset_alldelaylines(struct wlan_dfs *dfs)
|
||||
}
|
||||
}
|
||||
|
||||
if (!(dfs->dfs_b5radars)) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "b5radars=%pK",
|
||||
dfs->dfs_b5radars);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < dfs->dfs_rinfo.rn_numbin5radars; i++) {
|
||||
qdf_mem_zero(&(dfs->dfs_b5radars[i].br_elems[0]),
|
||||
sizeof(struct dfs_bin5elem) * DFS_MAX_B5_SIZE);
|
||||
@@ -337,16 +337,25 @@ int dfs_init_radar_filters(struct wlan_dfs *dfs,
|
||||
dfs_print_filters(dfs);
|
||||
|
||||
dfs->dfs_rinfo.rn_numbin5radars = numb5radars;
|
||||
if (dfs->dfs_b5radars)
|
||||
if (dfs->dfs_b5radars) {
|
||||
qdf_mem_free(dfs->dfs_b5radars);
|
||||
|
||||
dfs->dfs_b5radars = (struct dfs_bin5radars *)qdf_mem_malloc(
|
||||
numb5radars * sizeof(struct dfs_bin5radars));
|
||||
if (!(dfs->dfs_b5radars)) {
|
||||
dfs_alert(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"cannot allocate memory for bin5 radars");
|
||||
goto bad4;
|
||||
dfs->dfs_b5radars = NULL;
|
||||
}
|
||||
|
||||
if (numb5radars) {
|
||||
dfs->dfs_b5radars = (struct dfs_bin5radars *)qdf_mem_malloc(
|
||||
numb5radars * sizeof(struct dfs_bin5radars));
|
||||
/*
|
||||
* Malloc can return NULL if numb5radars is zero. But we still
|
||||
* want to reset the delay lines.
|
||||
*/
|
||||
if (!(dfs->dfs_b5radars)) {
|
||||
dfs_alert(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"cannot allocate memory for bin5 radars");
|
||||
goto bad4;
|
||||
}
|
||||
}
|
||||
|
||||
for (n = 0; n < numb5radars; n++) {
|
||||
dfs->dfs_b5radars[n].br_pulse = b5pulses[n];
|
||||
dfs->dfs_b5radars[n].br_pulse.b5_timewindow *= 1000000;
|
||||
|
Verwijs in nieuw issue
Block a user