Messages in this thread | | | Date | Sun, 27 Dec 2020 21:48:49 +0800 | From | kernel test robot <> | Subject | net/sctp/outqueue.c:1380:1: warning: the frame size of 8200 bytes is larger than 1024 bytes |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: f838f8d2b694cf9d524dc4423e9dd2db13892f3f commit: 18c07d23da5a48525b2955aa269b8bb108c19300 csky: Fixup calltrace panic date: 8 months ago config: csky-randconfig-r004-20201227 (attached as .config) compiler: csky-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18c07d23da5a48525b2955aa269b8bb108c19300 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 18c07d23da5a48525b2955aa269b8bb108c19300 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=csky
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
net/sctp/outqueue.c: In function 'sctp_outq_sack': >> net/sctp/outqueue.c:1380:1: warning: the frame size of 8200 bytes is larger than 1024 bytes [-Wframe-larger-than=] 1380 | } | ^
vim +1380 net/sctp/outqueue.c
^1da177e4c3f415 Linus Torvalds 2005-04-16 1216 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1217 /* This is where we REALLY process a SACK. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1218 * ^1da177e4c3f415 Linus Torvalds 2005-04-16 1219 * Process the SACK against the outqueue. Mostly, this just frees ^1da177e4c3f415 Linus Torvalds 2005-04-16 1220 * things off the transmitted queue. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1221 */ edfee0339e681a7 Nicolas Dichtel 2012-10-03 1222 int sctp_outq_sack(struct sctp_outq *q, struct sctp_chunk *chunk) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1223 { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1224 struct sctp_association *asoc = q->asoc; edfee0339e681a7 Nicolas Dichtel 2012-10-03 1225 struct sctp_sackhdr *sack = chunk->subh.sack_hdr; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1226 struct sctp_transport *transport; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1227 struct sctp_chunk *tchunk = NULL; 9dbc15f055f0539 Robert P. J. Day 2008-04-12 1228 struct list_head *lchunk, *transport_list, *temp; afd93b7be6e2473 Xin Long 2017-07-23 1229 union sctp_sack_variable *frags = sack->variable; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1230 __u32 sack_ctsn, ctsn, tsn; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1231 __u32 highest_tsn, highest_new_tsn; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1232 __u32 sack_a_rwnd; 95c961747284a6b Eric Dumazet 2012-04-15 1233 unsigned int outstanding; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1234 struct sctp_transport *primary = asoc->peer.primary_path; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1235 int count_of_newacks = 0; 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1236 int gap_ack_blocks; ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1237 u8 accum_moved = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1238 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1239 /* Grab the association's destination address list. */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1240 transport_list = &asoc->peer.transport_addr_list; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1241 f643ee295c1c63b Kevin Kou 2019-12-26 1242 /* SCTP path tracepoint for congestion control debugging. */ f398efc14a9277b Kevin Kou 2019-12-27 1243 if (trace_sctp_probe_path_enabled()) { f398efc14a9277b Kevin Kou 2019-12-27 1244 list_for_each_entry(transport, transport_list, transports) f643ee295c1c63b Kevin Kou 2019-12-26 1245 trace_sctp_probe_path(transport, asoc); f643ee295c1c63b Kevin Kou 2019-12-26 1246 } f643ee295c1c63b Kevin Kou 2019-12-26 1247 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1248 sack_ctsn = ntohl(sack->cum_tsn_ack); 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1249 gap_ack_blocks = ntohs(sack->num_gap_ack_blocks); 196d67593439b03 Michele Baldessari 2012-12-01 1250 asoc->stats.gapcnt += gap_ack_blocks; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1251 /* ^1da177e4c3f415 Linus Torvalds 2005-04-16 1252 * SFR-CACC algorithm: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1253 * On receipt of a SACK the sender SHOULD execute the ^1da177e4c3f415 Linus Torvalds 2005-04-16 1254 * following statements. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1255 * ^1da177e4c3f415 Linus Torvalds 2005-04-16 1256 * 1) If the cumulative ack in the SACK passes next tsn_at_change ^1da177e4c3f415 Linus Torvalds 2005-04-16 1257 * on the current primary, the CHANGEOVER_ACTIVE flag SHOULD be ^1da177e4c3f415 Linus Torvalds 2005-04-16 1258 * cleared. The CYCLING_CHANGEOVER flag SHOULD also be cleared for ^1da177e4c3f415 Linus Torvalds 2005-04-16 1259 * all destinations. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1260 * 2) If the SACK contains gap acks and the flag CHANGEOVER_ACTIVE ^1da177e4c3f415 Linus Torvalds 2005-04-16 1261 * is set the receiver of the SACK MUST take the following actions: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1262 * ^1da177e4c3f415 Linus Torvalds 2005-04-16 1263 * A) Initialize the cacc_saw_newack to 0 for all destination ^1da177e4c3f415 Linus Torvalds 2005-04-16 1264 * addresses. ab5216a5bd45375 Vlad Yasevich 2008-06-19 1265 * ab5216a5bd45375 Vlad Yasevich 2008-06-19 1266 * Only bother if changeover_active is set. Otherwise, this is ab5216a5bd45375 Vlad Yasevich 2008-06-19 1267 * totally suboptimal to do on every SACK. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1268 */ ab5216a5bd45375 Vlad Yasevich 2008-06-19 1269 if (primary->cacc.changeover_active) { ab5216a5bd45375 Vlad Yasevich 2008-06-19 1270 u8 clear_cycling = 0; ab5216a5bd45375 Vlad Yasevich 2008-06-19 1271 ab5216a5bd45375 Vlad Yasevich 2008-06-19 1272 if (TSN_lte(primary->cacc.next_tsn_at_change, sack_ctsn)) { ab5216a5bd45375 Vlad Yasevich 2008-06-19 1273 primary->cacc.changeover_active = 0; ab5216a5bd45375 Vlad Yasevich 2008-06-19 1274 clear_cycling = 1; ab5216a5bd45375 Vlad Yasevich 2008-06-19 1275 } ab5216a5bd45375 Vlad Yasevich 2008-06-19 1276 ab5216a5bd45375 Vlad Yasevich 2008-06-19 1277 if (clear_cycling || gap_ack_blocks) { ab5216a5bd45375 Vlad Yasevich 2008-06-19 1278 list_for_each_entry(transport, transport_list, ab5216a5bd45375 Vlad Yasevich 2008-06-19 1279 transports) { ab5216a5bd45375 Vlad Yasevich 2008-06-19 1280 if (clear_cycling) ab5216a5bd45375 Vlad Yasevich 2008-06-19 1281 transport->cacc.cycling_changeover = 0; ab5216a5bd45375 Vlad Yasevich 2008-06-19 1282 if (gap_ack_blocks) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1283 transport->cacc.cacc_saw_newack = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1284 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1285 } ab5216a5bd45375 Vlad Yasevich 2008-06-19 1286 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1287 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1288 /* Get the highest TSN in the sack. */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1289 highest_tsn = sack_ctsn; 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1290 if (gap_ack_blocks) 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1291 highest_tsn += ntohs(frags[gap_ack_blocks - 1].gab.end); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1292 bfa0d9843ac5feb Vlad Yasevich 2010-04-30 1293 if (TSN_lt(asoc->highest_sacked, highest_tsn)) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1294 asoc->highest_sacked = highest_tsn; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1295 bfa0d9843ac5feb Vlad Yasevich 2010-04-30 1296 highest_new_tsn = sack_ctsn; 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1297 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1298 /* Run through the retransmit queue. Credit bytes received ^1da177e4c3f415 Linus Torvalds 2005-04-16 1299 * and free those chunks that we can. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1300 */ edfee0339e681a7 Nicolas Dichtel 2012-10-03 1301 sctp_check_transmitted(q, &q->retransmit, NULL, NULL, sack, &highest_new_tsn); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1302 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1303 /* Run through the transmitted queue. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1304 * Credit bytes received and free those chunks which we can. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1305 * ^1da177e4c3f415 Linus Torvalds 2005-04-16 1306 * This is a MASSIVE candidate for optimization. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1307 */ 9dbc15f055f0539 Robert P. J. Day 2008-04-12 1308 list_for_each_entry(transport, transport_list, transports) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1309 sctp_check_transmitted(q, &transport->transmitted, edfee0339e681a7 Nicolas Dichtel 2012-10-03 1310 transport, &chunk->source, sack, edfee0339e681a7 Nicolas Dichtel 2012-10-03 1311 &highest_new_tsn); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1312 /* ^1da177e4c3f415 Linus Torvalds 2005-04-16 1313 * SFR-CACC algorithm: ^1da177e4c3f415 Linus Torvalds 2005-04-16 1314 * C) Let count_of_newacks be the number of ^1da177e4c3f415 Linus Torvalds 2005-04-16 1315 * destinations for which cacc_saw_newack is set. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1316 */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1317 if (transport->cacc.cacc_saw_newack) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1318 count_of_newacks++; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1319 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1320 ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1321 /* Move the Cumulative TSN Ack Point if appropriate. */ ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1322 if (TSN_lt(asoc->ctsn_ack_point, sack_ctsn)) { ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1323 asoc->ctsn_ack_point = sack_ctsn; ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1324 accum_moved = 1; ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1325 } ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1326 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1327 if (gap_ack_blocks) { ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1328 ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1329 if (asoc->fast_recovery && accum_moved) ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1330 highest_new_tsn = highest_tsn; ea862c8d1f4a0d1 Vlad Yasevich 2010-04-30 1331 2cd9b822bfa79fc Vlad Yasevich 2008-06-19 1332 list_for_each_entry(transport, transport_list, transports) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1333 sctp_mark_missing(q, &transport->transmitted, transport, ^1da177e4c3f415 Linus Torvalds 2005-04-16 1334 highest_new_tsn, count_of_newacks); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1335 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1336 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1337 /* Update unack_data field in the assoc. */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1338 sctp_sack_update_unack_data(asoc, sack); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1339 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1340 ctsn = asoc->ctsn_ack_point; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1341 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1342 /* Throw away stuff rotting on the sack queue. */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1343 list_for_each_safe(lchunk, temp, &q->sacked) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1344 tchunk = list_entry(lchunk, struct sctp_chunk, ^1da177e4c3f415 Linus Torvalds 2005-04-16 1345 transmitted_list); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1346 tsn = ntohl(tchunk->subh.data_hdr->tsn); 5f9646c3d9f92a9 Vlad Yasevich 2008-02-05 1347 if (TSN_lte(tsn, ctsn)) { 5f9646c3d9f92a9 Vlad Yasevich 2008-02-05 1348 list_del_init(&tchunk->transmitted_list); be4947bf46cb0e7 Xin Long 2016-09-29 1349 if (asoc->peer.prsctp_capable && 8dbdf1f5b09cb22 Xin Long 2016-07-09 1350 SCTP_PR_PRIO_ENABLED(chunk->sinfo.sinfo_flags)) 8dbdf1f5b09cb22 Xin Long 2016-07-09 1351 asoc->sent_cnt_removable--; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1352 sctp_chunk_free(tchunk); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1353 } 5f9646c3d9f92a9 Vlad Yasevich 2008-02-05 1354 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1355 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1356 /* ii) Set rwnd equal to the newly received a_rwnd minus the ^1da177e4c3f415 Linus Torvalds 2005-04-16 1357 * number of bytes still outstanding after processing the ^1da177e4c3f415 Linus Torvalds 2005-04-16 1358 * Cumulative TSN Ack and the Gap Ack Blocks. ^1da177e4c3f415 Linus Torvalds 2005-04-16 1359 */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1360 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1361 sack_a_rwnd = ntohl(sack->a_rwnd); 8a0d19c5ed417c7 lucien 2015-12-05 1362 asoc->peer.zero_window_announced = !sack_a_rwnd; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1363 outstanding = q->outstanding_bytes; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1364 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1365 if (outstanding < sack_a_rwnd) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1366 sack_a_rwnd -= outstanding; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1367 else ^1da177e4c3f415 Linus Torvalds 2005-04-16 1368 sack_a_rwnd = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1369 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1370 asoc->peer.rwnd = sack_a_rwnd; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1371 8e0c3b73cec1b94 Xin Long 2017-12-15 1372 asoc->stream.si->generate_ftsn(q, sack_ctsn); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1373 bb33381d0c97cde Daniel Borkmann 2013-06-28 1374 pr_debug("%s: sack cumulative tsn ack:0x%x\n", __func__, sack_ctsn); bb33381d0c97cde Daniel Borkmann 2013-06-28 1375 pr_debug("%s: cumulative tsn ack of assoc:%p is 0x%x, " bb33381d0c97cde Daniel Borkmann 2013-06-28 1376 "advertised peer ack point:0x%x\n", __func__, asoc, ctsn, bb33381d0c97cde Daniel Borkmann 2013-06-28 1377 asoc->adv_peer_ack_point); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1378 619a60ee04be332 Vlad Yasevich 2014-01-02 1379 return sctp_outq_is_empty(q); ^1da177e4c3f415 Linus Torvalds 2005-04-16 @1380 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1381
:::::: The code at line 1380 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org> :::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |