Fengguang, this seems to be a very old version of linux-next? regards, dan carpenter
On Sat, Nov 15, 2014 at 07:32:54AM +0800, kbuild test robot wrote: > TO: Karl Beldan <[email protected]> > CC: Johannes Berg <[email protected]> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git > master > head: d7e5a72b951a4ef6d97b2aa43cad37f237ba8030 > commit: d4d141cae804a430054f4138fa177229114f203a [1093/6788] mac80211: > minstrel_ht: Increase the range of handled rate indexes > :::::: branch date: 15 hours ago > :::::: commit date: 4 weeks ago > > net/mac80211/rc80211_minstrel_ht.c:255 minstrel_ht_sort_best_tp_rates() > error: buffer overflow 'tp_list' 2 <= 3 > net/mac80211/rc80211_minstrel_ht.c:256 minstrel_ht_sort_best_tp_rates() > error: buffer overflow 'tp_list' 2 <= 3 > net/mac80211/rc80211_minstrel_ht.c:270 minstrel_ht_sort_best_tp_rates() warn: > buffer overflow 'tp_list' 2 <= 2 > net/mac80211/rc80211_minstrel_ht.c:274 minstrel_ht_sort_best_tp_rates() > error: buffer overflow 'tp_list' 2 <= 3 > net/mac80211/rc80211_minstrel_ht.c:340 minstrel_ht_assign_best_tp_rates() > error: buffer overflow 'tmp_cck_tp_rate' 2 <= 3 > > git remote add next > git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git > git remote update next > git checkout d4d141cae804a430054f4138fa177229114f203a > vim +/tp_list +255 net/mac80211/rc80211_minstrel_ht.c > > 5935839a Thomas Huehn 2014-09-09 249 > 5935839a Thomas Huehn 2014-09-09 250 cur_group = index / > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 251 cur_idx = index % > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 252 cur_thr = > mi->groups[cur_group].rates[cur_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 253 cur_prob = > mi->groups[cur_group].rates[cur_idx].probability; > 5935839a Thomas Huehn 2014-09-09 254 > 5935839a Thomas Huehn 2014-09-09 @255 tmp_group = tp_list[j - 1] / > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 @256 tmp_idx = tp_list[j - 1] % > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 257 tmp_thr = > mi->groups[tmp_group].rates[tmp_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 258 tmp_prob = > mi->groups[tmp_group].rates[tmp_idx].probability; > 5935839a Thomas Huehn 2014-09-09 259 > 5935839a Thomas Huehn 2014-09-09 260 while (j > 0 && (cur_thr > > tmp_thr || > 5935839a Thomas Huehn 2014-09-09 261 (cur_thr == tmp_thr && > cur_prob > tmp_prob))) { > 5935839a Thomas Huehn 2014-09-09 262 j--; > 5935839a Thomas Huehn 2014-09-09 263 tmp_group = tp_list[j - > 1] / MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 264 tmp_idx = tp_list[j - > 1] % MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 265 tmp_thr = > mi->groups[tmp_group].rates[tmp_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 266 tmp_prob = > mi->groups[tmp_group].rates[tmp_idx].probability; > 5935839a Thomas Huehn 2014-09-09 267 } > 5935839a Thomas Huehn 2014-09-09 268 > 5935839a Thomas Huehn 2014-09-09 269 if (j < MAX_THR_RATES - 1) { > 5935839a Thomas Huehn 2014-09-09 @270 memmove(&tp_list[j + > 1], &tp_list[j], (sizeof(*tp_list) * > 5935839a Thomas Huehn 2014-09-09 271 (MAX_THR_RATES - > (j + 1)))); > 5935839a Thomas Huehn 2014-09-09 272 } > 5935839a Thomas Huehn 2014-09-09 273 if (j < MAX_THR_RATES) > 5935839a Thomas Huehn 2014-09-09 @274 tp_list[j] = index; > 5935839a Thomas Huehn 2014-09-09 275 } > 5935839a Thomas Huehn 2014-09-09 276 > 5935839a Thomas Huehn 2014-09-09 277 /* > 5935839a Thomas Huehn 2014-09-09 278 * Find and set the topmost > probability rate per sta and per group > 5935839a Thomas Huehn 2014-09-09 279 */ > 5935839a Thomas Huehn 2014-09-09 280 static void > d4d141ca Karl Beldan 2014-10-20 281 minstrel_ht_set_best_prob_rate(struct > minstrel_ht_sta *mi, u16 index) > 5935839a Thomas Huehn 2014-09-09 282 { > 5935839a Thomas Huehn 2014-09-09 283 struct minstrel_mcs_group_data > *mg; > 5935839a Thomas Huehn 2014-09-09 284 struct minstrel_rate_stats *mr; > 5935839a Thomas Huehn 2014-09-09 285 int tmp_group, tmp_idx, tmp_tp, > tmp_prob, max_tp_group; > 5935839a Thomas Huehn 2014-09-09 286 > 5935839a Thomas Huehn 2014-09-09 287 mg = &mi->groups[index / > MCS_GROUP_RATES]; > 5935839a Thomas Huehn 2014-09-09 288 mr = &mg->rates[index % > MCS_GROUP_RATES]; > 5935839a Thomas Huehn 2014-09-09 289 > 5935839a Thomas Huehn 2014-09-09 290 tmp_group = mi->max_prob_rate / > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 291 tmp_idx = mi->max_prob_rate % > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 292 tmp_tp = > mi->groups[tmp_group].rates[tmp_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 293 tmp_prob = > mi->groups[tmp_group].rates[tmp_idx].probability; > 5935839a Thomas Huehn 2014-09-09 294 > 5935839a Thomas Huehn 2014-09-09 295 /* if max_tp_rate[0] is from > MCS_GROUP max_prob_rate get selected from > 5935839a Thomas Huehn 2014-09-09 296 * MCS_GROUP as well as > CCK_GROUP rates do not allow aggregation */ > 5935839a Thomas Huehn 2014-09-09 297 max_tp_group = > mi->max_tp_rate[0] / MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 298 if((index / MCS_GROUP_RATES == > MINSTREL_CCK_GROUP) && > 5935839a Thomas Huehn 2014-09-09 299 (max_tp_group != > MINSTREL_CCK_GROUP)) > 5935839a Thomas Huehn 2014-09-09 300 return; > 5935839a Thomas Huehn 2014-09-09 301 > 5935839a Thomas Huehn 2014-09-09 302 if (mr->probability > > MINSTREL_FRAC(75, 100)) { > 5935839a Thomas Huehn 2014-09-09 303 if (mr->cur_tp > tmp_tp) > 5935839a Thomas Huehn 2014-09-09 304 > mi->max_prob_rate = index; > 5935839a Thomas Huehn 2014-09-09 305 if (mr->cur_tp > > mg->rates[mg->max_group_prob_rate].cur_tp) > 5935839a Thomas Huehn 2014-09-09 306 > mg->max_group_prob_rate = index; > 5935839a Thomas Huehn 2014-09-09 307 } else { > 5935839a Thomas Huehn 2014-09-09 308 if (mr->probability > > tmp_prob) > 5935839a Thomas Huehn 2014-09-09 309 > mi->max_prob_rate = index; > 5935839a Thomas Huehn 2014-09-09 310 if (mr->probability > > mg->rates[mg->max_group_prob_rate].probability) > 5935839a Thomas Huehn 2014-09-09 311 > mg->max_group_prob_rate = index; > 5935839a Thomas Huehn 2014-09-09 312 } > 5935839a Thomas Huehn 2014-09-09 313 } > 5935839a Thomas Huehn 2014-09-09 314 > 5935839a Thomas Huehn 2014-09-09 315 > 5935839a Thomas Huehn 2014-09-09 316 /* > 5935839a Thomas Huehn 2014-09-09 317 * Assign new rate set per sta and use > CCK rates only if the fastest > 5935839a Thomas Huehn 2014-09-09 318 * rate (max_tp_rate[0]) is from CCK > group. This prohibits such sorted > 5935839a Thomas Huehn 2014-09-09 319 * rate sets where MCS and CCK rates > are mixed, because CCK rates can > 5935839a Thomas Huehn 2014-09-09 320 * not use aggregation. > 5935839a Thomas Huehn 2014-09-09 321 */ > 5935839a Thomas Huehn 2014-09-09 322 static void > 5935839a Thomas Huehn 2014-09-09 323 > minstrel_ht_assign_best_tp_rates(struct minstrel_ht_sta *mi, > d4d141ca Karl Beldan 2014-10-20 324 u16 > tmp_mcs_tp_rate[MAX_THR_RATES], > d4d141ca Karl Beldan 2014-10-20 325 u16 > tmp_cck_tp_rate[MAX_THR_RATES]) > 5935839a Thomas Huehn 2014-09-09 326 { > 5935839a Thomas Huehn 2014-09-09 327 unsigned int tmp_group, > tmp_idx, tmp_cck_tp, tmp_mcs_tp; > 5935839a Thomas Huehn 2014-09-09 328 int i; > 5935839a Thomas Huehn 2014-09-09 329 > 5935839a Thomas Huehn 2014-09-09 330 tmp_group = tmp_cck_tp_rate[0] > / MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 331 tmp_idx = tmp_cck_tp_rate[0] % > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 332 tmp_cck_tp = > mi->groups[tmp_group].rates[tmp_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 333 > 5935839a Thomas Huehn 2014-09-09 334 tmp_group = tmp_mcs_tp_rate[0] > / MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 335 tmp_idx = tmp_mcs_tp_rate[0] % > MCS_GROUP_RATES; > 5935839a Thomas Huehn 2014-09-09 336 tmp_mcs_tp = > mi->groups[tmp_group].rates[tmp_idx].cur_tp; > 5935839a Thomas Huehn 2014-09-09 337 > 5935839a Thomas Huehn 2014-09-09 338 if (tmp_cck_tp > tmp_mcs_tp) { > 5935839a Thomas Huehn 2014-09-09 339 for(i = 0; i < > MAX_THR_RATES; i++) { > 5935839a Thomas Huehn 2014-09-09 @340 > minstrel_ht_sort_best_tp_rates(mi, tmp_cck_tp_rate[i], > 5935839a Thomas Huehn 2014-09-09 341 > tmp_mcs_tp_rate); > 5935839a Thomas Huehn 2014-09-09 342 } > 5935839a Thomas Huehn 2014-09-09 343 } > > :::::: The code at line 255 was first introduced by commit > :::::: 5935839ad73583781b8bbe8d91412f6826e218a4 mac80211: improve minstrel_ht > rate sorting by throughput & probability > > :::::: TO: Thomas Huehn <[email protected]> > :::::: CC: Johannes Berg <[email protected]> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > http://lists.01.org/mailman/listinfo/kbuild Intel Corporation _______________________________________________ kbuild mailing list [email protected] https://lists.01.org/mailman/listinfo/kbuild
