On Wed, Aug 29, 2018 at 11:32 PM Julia Lawall <julia.law...@lip6.fr> wrote: > > Hello, > > Are the ifs starting on lines 2655 and 2680 mutually exclusive? If so, > perhaps add an else. If not, and if the trans on line 2681 can come from > the trans initialized by the loop on line 2661, then there is a problem. You're right, I will send a fix to add a local trans for transport_addr_list traversing. Thanks.
> > julia > > ---------- Forwarded message ---------- > Date: Wed, 29 Aug 2018 22:02:39 +0800 > From: kbuild test robot <l...@intel.com> > To: kbu...@01.org > Cc: Julia Lawall <julia.law...@lip6.fr> > Subject: net/sctp/socket.c:2681:6-11: ERROR: invalid reference to the index > variable of the iterator on line 2661 > > CC: kbuild-...@01.org > CC: linux-kernel@vger.kernel.org > TO: Xin Long <lucien....@gmail.com> > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > master > head: 3f16503b7d2274ac8cbab11163047ac0b4c66cfe > commit: 0b0dce7a36fb9f1a9dd8245ea82d3a268c6943fe sctp: add spp_ipv6_flowlabel > and spp_dscp for sctp_paddrparams > date: 8 weeks ago > :::::: branch date: 15 hours ago > :::::: commit date: 8 weeks ago > > >> net/sctp/socket.c:2681:6-11: ERROR: invalid reference to the index > >> variable of the iterator on line 2661 > > # > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b0dce7a36fb9f1a9dd8245ea82d3a268c6943fe > git remote add linus > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > git remote update linus > git checkout 0b0dce7a36fb9f1a9dd8245ea82d3a268c6943fe > vim +2681 net/sctp/socket.c > > ^1da177e4 Linus Torvalds 2005-04-16 2378 > ^1da177e4 Linus Torvalds 2005-04-16 2379 /* 7.1.13 Peer Address > Parameters (SCTP_PEER_ADDR_PARAMS) > ^1da177e4 Linus Torvalds 2005-04-16 2380 * > ^1da177e4 Linus Torvalds 2005-04-16 2381 * Applications can > enable or disable heartbeats for any peer address of > ^1da177e4 Linus Torvalds 2005-04-16 2382 * an association, modify > an address's heartbeat interval, force a > ^1da177e4 Linus Torvalds 2005-04-16 2383 * heartbeat to be sent > immediately, and adjust the address's maximum > ^1da177e4 Linus Torvalds 2005-04-16 2384 * number of > retransmissions sent before an address is considered > ^1da177e4 Linus Torvalds 2005-04-16 2385 * unreachable. The > following structure is used to access and modify an > ^1da177e4 Linus Torvalds 2005-04-16 2386 * address's parameters: > ^1da177e4 Linus Torvalds 2005-04-16 2387 * > ^1da177e4 Linus Torvalds 2005-04-16 2388 * struct > sctp_paddrparams { > ^1da177e4 Linus Torvalds 2005-04-16 2389 * sctp_assoc_t > spp_assoc_id; > ^1da177e4 Linus Torvalds 2005-04-16 2390 * struct > sockaddr_storage spp_address; > ^1da177e4 Linus Torvalds 2005-04-16 2391 * uint32_t > spp_hbinterval; > ^1da177e4 Linus Torvalds 2005-04-16 2392 * uint16_t > spp_pathmaxrxt; > 52ccb8e90 Frank Filz 2005-12-22 2393 * uint32_t > spp_pathmtu; > 52ccb8e90 Frank Filz 2005-12-22 2394 * uint32_t > spp_sackdelay; > 52ccb8e90 Frank Filz 2005-12-22 2395 * uint32_t > spp_flags; > 0b0dce7a3 Xin Long 2018-07-02 2396 * uint32_t > spp_ipv6_flowlabel; > 0b0dce7a3 Xin Long 2018-07-02 2397 * uint8_t > spp_dscp; > ^1da177e4 Linus Torvalds 2005-04-16 2398 * }; > ^1da177e4 Linus Torvalds 2005-04-16 2399 * > 52ccb8e90 Frank Filz 2005-12-22 2400 * spp_assoc_id - > (one-to-many style socket) This is filled in the > 52ccb8e90 Frank Filz 2005-12-22 2401 * > application, and identifies the association for > 52ccb8e90 Frank Filz 2005-12-22 2402 * > this query. > ^1da177e4 Linus Torvalds 2005-04-16 2403 * spp_address - > This specifies which address is of interest. > ^1da177e4 Linus Torvalds 2005-04-16 2404 * spp_hbinterval - > This contains the value of the heartbeat interval, > 52ccb8e90 Frank Filz 2005-12-22 2405 * in > milliseconds. If a value of zero > 52ccb8e90 Frank Filz 2005-12-22 2406 * is > present in this field then no changes are to > 52ccb8e90 Frank Filz 2005-12-22 2407 * be > made to this parameter. > ^1da177e4 Linus Torvalds 2005-04-16 2408 * spp_pathmaxrxt - > This contains the maximum number of > ^1da177e4 Linus Torvalds 2005-04-16 2409 * > retransmissions before this address shall be > 52ccb8e90 Frank Filz 2005-12-22 2410 * > considered unreachable. If a value of zero > 52ccb8e90 Frank Filz 2005-12-22 2411 * is > present in this field then no changes are to > 52ccb8e90 Frank Filz 2005-12-22 2412 * be > made to this parameter. > 52ccb8e90 Frank Filz 2005-12-22 2413 * spp_pathmtu - > When Path MTU discovery is disabled the value > 52ccb8e90 Frank Filz 2005-12-22 2414 * > specified here will be the "fixed" path mtu. > 52ccb8e90 Frank Filz 2005-12-22 2415 * > Note that if the spp_address field is empty > 52ccb8e90 Frank Filz 2005-12-22 2416 * > then all associations on this address will > 52ccb8e90 Frank Filz 2005-12-22 2417 * > have this fixed path mtu set upon them. > 52ccb8e90 Frank Filz 2005-12-22 2418 * > 52ccb8e90 Frank Filz 2005-12-22 2419 * spp_sackdelay - > When delayed sack is enabled, this value specifies > 52ccb8e90 Frank Filz 2005-12-22 2420 * > the number of milliseconds that sacks will be delayed > 52ccb8e90 Frank Filz 2005-12-22 2421 * > for. This value will apply to all addresses of an > 52ccb8e90 Frank Filz 2005-12-22 2422 * > association if the spp_address field is empty. Note > 52ccb8e90 Frank Filz 2005-12-22 2423 * > also, that if delayed sack is enabled and this > 52ccb8e90 Frank Filz 2005-12-22 2424 * > value is set to 0, no change is made to the last > 52ccb8e90 Frank Filz 2005-12-22 2425 * > recorded delayed sack timer value. > 52ccb8e90 Frank Filz 2005-12-22 2426 * > 52ccb8e90 Frank Filz 2005-12-22 2427 * spp_flags - > These flags are used to control various features > 52ccb8e90 Frank Filz 2005-12-22 2428 * on > an association. The flag field may contain > 52ccb8e90 Frank Filz 2005-12-22 2429 * > zero or more of the following options. > 52ccb8e90 Frank Filz 2005-12-22 2430 * > 52ccb8e90 Frank Filz 2005-12-22 2431 * > SPP_HB_ENABLE - Enable heartbeats on the > 52ccb8e90 Frank Filz 2005-12-22 2432 * > specified address. Note that if the address > 52ccb8e90 Frank Filz 2005-12-22 2433 * > field is empty all addresses for the association > 52ccb8e90 Frank Filz 2005-12-22 2434 * > have heartbeats enabled upon them. > 52ccb8e90 Frank Filz 2005-12-22 2435 * > 52ccb8e90 Frank Filz 2005-12-22 2436 * > SPP_HB_DISABLE - Disable heartbeats on the > 52ccb8e90 Frank Filz 2005-12-22 2437 * > speicifed address. Note that if the address > 52ccb8e90 Frank Filz 2005-12-22 2438 * > field is empty all addresses for the association > 52ccb8e90 Frank Filz 2005-12-22 2439 * > will have their heartbeats disabled. Note also > 52ccb8e90 Frank Filz 2005-12-22 2440 * > that SPP_HB_ENABLE and SPP_HB_DISABLE are > 52ccb8e90 Frank Filz 2005-12-22 2441 * > mutually exclusive, only one of these two should > 52ccb8e90 Frank Filz 2005-12-22 2442 * be > specified. Enabling both fields will have > 52ccb8e90 Frank Filz 2005-12-22 2443 * > undetermined results. > 52ccb8e90 Frank Filz 2005-12-22 2444 * > 52ccb8e90 Frank Filz 2005-12-22 2445 * > SPP_HB_DEMAND - Request a user initiated heartbeat > 52ccb8e90 Frank Filz 2005-12-22 2446 * to > be made immediately. > 52ccb8e90 Frank Filz 2005-12-22 2447 * > bdf3092af Vlad Yasevich 2007-03-23 2448 * > SPP_HB_TIME_IS_ZERO - Specify's that the time for > bdf3092af Vlad Yasevich 2007-03-23 2449 * > heartbeat delayis to be set to the value of 0 > bdf3092af Vlad Yasevich 2007-03-23 2450 * > milliseconds. > bdf3092af Vlad Yasevich 2007-03-23 2451 * > 52ccb8e90 Frank Filz 2005-12-22 2452 * > SPP_PMTUD_ENABLE - This field will enable PMTU > 52ccb8e90 Frank Filz 2005-12-22 2453 * > discovery upon the specified address. Note that > 52ccb8e90 Frank Filz 2005-12-22 2454 * if > the address feild is empty then all addresses > 52ccb8e90 Frank Filz 2005-12-22 2455 * on > the association are effected. > 52ccb8e90 Frank Filz 2005-12-22 2456 * > 52ccb8e90 Frank Filz 2005-12-22 2457 * > SPP_PMTUD_DISABLE - This field will disable PMTU > 52ccb8e90 Frank Filz 2005-12-22 2458 * > discovery upon the specified address. Note that > 52ccb8e90 Frank Filz 2005-12-22 2459 * if > the address feild is empty then all addresses > 52ccb8e90 Frank Filz 2005-12-22 2460 * on > the association are effected. Not also that > 52ccb8e90 Frank Filz 2005-12-22 2461 * > SPP_PMTUD_ENABLE and SPP_PMTUD_DISABLE are mutually > 52ccb8e90 Frank Filz 2005-12-22 2462 * > exclusive. Enabling both will have undetermined > 52ccb8e90 Frank Filz 2005-12-22 2463 * > results. > 52ccb8e90 Frank Filz 2005-12-22 2464 * > 52ccb8e90 Frank Filz 2005-12-22 2465 * > SPP_SACKDELAY_ENABLE - Setting this flag turns > 52ccb8e90 Frank Filz 2005-12-22 2466 * on > delayed sack. The time specified in spp_sackdelay > 52ccb8e90 Frank Filz 2005-12-22 2467 * is > used to specify the sack delay for this address. Note > 52ccb8e90 Frank Filz 2005-12-22 2468 * > that if spp_address is empty then all addresses will > 52ccb8e90 Frank Filz 2005-12-22 2469 * > enable delayed sack and take on the sack delay > 52ccb8e90 Frank Filz 2005-12-22 2470 * > value specified in spp_sackdelay. > 52ccb8e90 Frank Filz 2005-12-22 2471 * > SPP_SACKDELAY_DISABLE - Setting this flag turns > 52ccb8e90 Frank Filz 2005-12-22 2472 * > off delayed sack. If the spp_address field is blank then > 52ccb8e90 Frank Filz 2005-12-22 2473 * > delayed sack is disabled for the entire association. Note > 52ccb8e90 Frank Filz 2005-12-22 2474 * > also that this field is mutually exclusive to > 52ccb8e90 Frank Filz 2005-12-22 2475 * > SPP_SACKDELAY_ENABLE, setting both will have undefined > 52ccb8e90 Frank Filz 2005-12-22 2476 * > results. > 0b0dce7a3 Xin Long 2018-07-02 2477 * > 0b0dce7a3 Xin Long 2018-07-02 2478 * > SPP_IPV6_FLOWLABEL: Setting this flag enables the > 0b0dce7a3 Xin Long 2018-07-02 2479 * > setting of the IPV6 flow label value. The value is > 0b0dce7a3 Xin Long 2018-07-02 2480 * > contained in the spp_ipv6_flowlabel field. > 0b0dce7a3 Xin Long 2018-07-02 2481 * > Upon retrieval, this flag will be set to indicate that > 0b0dce7a3 Xin Long 2018-07-02 2482 * > the spp_ipv6_flowlabel field has a valid value returned. > 0b0dce7a3 Xin Long 2018-07-02 2483 * If > a specific destination address is set (in the > 0b0dce7a3 Xin Long 2018-07-02 2484 * > spp_address field), then the value returned is that of > 0b0dce7a3 Xin Long 2018-07-02 2485 * > the address. If just an association is specified (and > 0b0dce7a3 Xin Long 2018-07-02 2486 * no > address), then the association's default flow label > 0b0dce7a3 Xin Long 2018-07-02 2487 * is > returned. If neither an association nor a destination > 0b0dce7a3 Xin Long 2018-07-02 2488 * is > specified, then the socket's default flow label is > 0b0dce7a3 Xin Long 2018-07-02 2489 * > returned. For non-IPv6 sockets, this flag will be left > 0b0dce7a3 Xin Long 2018-07-02 2490 * > cleared. > 0b0dce7a3 Xin Long 2018-07-02 2491 * > 0b0dce7a3 Xin Long 2018-07-02 2492 * > SPP_DSCP: Setting this flag enables the setting of the > 0b0dce7a3 Xin Long 2018-07-02 2493 * > Differentiated Services Code Point (DSCP) value > 0b0dce7a3 Xin Long 2018-07-02 2494 * > associated with either the association or a specific > 0b0dce7a3 Xin Long 2018-07-02 2495 * > address. The value is obtained in the spp_dscp field. > 0b0dce7a3 Xin Long 2018-07-02 2496 * > Upon retrieval, this flag will be set to indicate that > 0b0dce7a3 Xin Long 2018-07-02 2497 * > the spp_dscp field has a valid value returned. If a > 0b0dce7a3 Xin Long 2018-07-02 2498 * > specific destination address is set when called (in the > 0b0dce7a3 Xin Long 2018-07-02 2499 * > spp_address field), then that specific destination > 0b0dce7a3 Xin Long 2018-07-02 2500 * > address's DSCP value is returned. If just an association > 0b0dce7a3 Xin Long 2018-07-02 2501 * is > specified, then the association's default DSCP is > 0b0dce7a3 Xin Long 2018-07-02 2502 * > returned. If neither an association nor a destination is > 0b0dce7a3 Xin Long 2018-07-02 2503 * > specified, then the socket's default DSCP is returned. > 0b0dce7a3 Xin Long 2018-07-02 2504 * > 0b0dce7a3 Xin Long 2018-07-02 2505 * spp_ipv6_flowlabel > 0b0dce7a3 Xin Long 2018-07-02 2506 * - > This field is used in conjunction with the > 0b0dce7a3 Xin Long 2018-07-02 2507 * > SPP_IPV6_FLOWLABEL flag and contains the IPv6 flow label. > 0b0dce7a3 Xin Long 2018-07-02 2508 * > The 20 least significant bits are used for the flow > 0b0dce7a3 Xin Long 2018-07-02 2509 * > label. This setting has precedence over any IPv6-layer > 0b0dce7a3 Xin Long 2018-07-02 2510 * > setting. > 0b0dce7a3 Xin Long 2018-07-02 2511 * > 0b0dce7a3 Xin Long 2018-07-02 2512 * spp_dscp - > This field is used in conjunction with the SPP_DSCP flag > 0b0dce7a3 Xin Long 2018-07-02 2513 * > and contains the DSCP. The 6 most significant bits are > 0b0dce7a3 Xin Long 2018-07-02 2514 * > used for the DSCP. This setting has precedence over any > 0b0dce7a3 Xin Long 2018-07-02 2515 * > IPv4- or IPv6- layer setting. > 52ccb8e90 Frank Filz 2005-12-22 2516 */ > 161643660 Adrian Bunk 2006-09-18 2517 static int > sctp_apply_peer_addr_params(struct sctp_paddrparams *params, > 52ccb8e90 Frank Filz 2005-12-22 2518 > struct sctp_transport *trans, > 52ccb8e90 Frank Filz 2005-12-22 2519 > struct sctp_association *asoc, > 52ccb8e90 Frank Filz 2005-12-22 2520 > struct sctp_sock *sp, > 52ccb8e90 Frank Filz 2005-12-22 2521 > int hb_change, > 52ccb8e90 Frank Filz 2005-12-22 2522 > int pmtud_change, > 52ccb8e90 Frank Filz 2005-12-22 2523 > int sackdelay_change) > 52ccb8e90 Frank Filz 2005-12-22 2524 { > 52ccb8e90 Frank Filz 2005-12-22 2525 int error; > 52ccb8e90 Frank Filz 2005-12-22 2526 > 52ccb8e90 Frank Filz 2005-12-22 2527 if (params->spp_flags > & SPP_HB_DEMAND && trans) { > 55e26eb95 Eric W. Biederman 2012-08-07 2528 struct net > *net = sock_net(trans->asoc->base.sk); > 55e26eb95 Eric W. Biederman 2012-08-07 2529 > 55e26eb95 Eric W. Biederman 2012-08-07 2530 error = > sctp_primitive_REQUESTHEARTBEAT(net, trans->asoc, trans); > 52ccb8e90 Frank Filz 2005-12-22 2531 if (error) > 52ccb8e90 Frank Filz 2005-12-22 2532 > return error; > 52ccb8e90 Frank Filz 2005-12-22 2533 } > 52ccb8e90 Frank Filz 2005-12-22 2534 > bdf3092af Vlad Yasevich 2007-03-23 2535 /* Note that unless > the spp_flag is set to SPP_HB_ENABLE the value of > bdf3092af Vlad Yasevich 2007-03-23 2536 * this field is > ignored. Note also that a value of zero indicates > bdf3092af Vlad Yasevich 2007-03-23 2537 * the current > setting should be left unchanged. > bdf3092af Vlad Yasevich 2007-03-23 2538 */ > bdf3092af Vlad Yasevich 2007-03-23 2539 if (params->spp_flags > & SPP_HB_ENABLE) { > bdf3092af Vlad Yasevich 2007-03-23 2540 > bdf3092af Vlad Yasevich 2007-03-23 2541 /* Re-zero > the interval if the SPP_HB_TIME_IS_ZERO is > bdf3092af Vlad Yasevich 2007-03-23 2542 * set. This > lets us use 0 value when this flag > bdf3092af Vlad Yasevich 2007-03-23 2543 * is set. > bdf3092af Vlad Yasevich 2007-03-23 2544 */ > bdf3092af Vlad Yasevich 2007-03-23 2545 if > (params->spp_flags & SPP_HB_TIME_IS_ZERO) > bdf3092af Vlad Yasevich 2007-03-23 2546 > params->spp_hbinterval = 0; > bdf3092af Vlad Yasevich 2007-03-23 2547 > bdf3092af Vlad Yasevich 2007-03-23 2548 if > (params->spp_hbinterval || > bdf3092af Vlad Yasevich 2007-03-23 2549 > (params->spp_flags & SPP_HB_TIME_IS_ZERO)) { > 52ccb8e90 Frank Filz 2005-12-22 2550 if > (trans) { > bdf3092af Vlad Yasevich 2007-03-23 2551 > trans->hbinterval = > bdf3092af Vlad Yasevich 2007-03-23 2552 > msecs_to_jiffies(params->spp_hbinterval); > 52ccb8e90 Frank Filz 2005-12-22 2553 } > else if (asoc) { > bdf3092af Vlad Yasevich 2007-03-23 2554 > asoc->hbinterval = > bdf3092af Vlad Yasevich 2007-03-23 2555 > msecs_to_jiffies(params->spp_hbinterval); > 52ccb8e90 Frank Filz 2005-12-22 2556 } > else { > 52ccb8e90 Frank Filz 2005-12-22 2557 > sp->hbinterval = params->spp_hbinterval; > 52ccb8e90 Frank Filz 2005-12-22 2558 } > 52ccb8e90 Frank Filz 2005-12-22 2559 } > bdf3092af Vlad Yasevich 2007-03-23 2560 } > 52ccb8e90 Frank Filz 2005-12-22 2561 > 52ccb8e90 Frank Filz 2005-12-22 2562 if (hb_change) { > 52ccb8e90 Frank Filz 2005-12-22 2563 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2564 > trans->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2565 > (trans->param_flags & ~SPP_HB) | hb_change; > 52ccb8e90 Frank Filz 2005-12-22 2566 } else if > (asoc) { > 52ccb8e90 Frank Filz 2005-12-22 2567 > asoc->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2568 > (asoc->param_flags & ~SPP_HB) | hb_change; > 52ccb8e90 Frank Filz 2005-12-22 2569 } else { > 52ccb8e90 Frank Filz 2005-12-22 2570 > sp->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2571 > (sp->param_flags & ~SPP_HB) | hb_change; > 52ccb8e90 Frank Filz 2005-12-22 2572 } > 52ccb8e90 Frank Filz 2005-12-22 2573 } > 52ccb8e90 Frank Filz 2005-12-22 2574 > bdf3092af Vlad Yasevich 2007-03-23 2575 /* When Path MTU > discovery is disabled the value specified here will > bdf3092af Vlad Yasevich 2007-03-23 2576 * be the "fixed" > path mtu (i.e. the value of the spp_flags field must > bdf3092af Vlad Yasevich 2007-03-23 2577 * include the flag > SPP_PMTUD_DISABLE for this field to have any > bdf3092af Vlad Yasevich 2007-03-23 2578 * effect). > bdf3092af Vlad Yasevich 2007-03-23 2579 */ > bdf3092af Vlad Yasevich 2007-03-23 2580 if > ((params->spp_flags & SPP_PMTUD_DISABLE) && params->spp_pathmtu) { > 52ccb8e90 Frank Filz 2005-12-22 2581 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2582 > trans->pathmtu = params->spp_pathmtu; > 3ebfdf082 Xin Long 2017-04-04 2583 > sctp_assoc_sync_pmtu(asoc); > 52ccb8e90 Frank Filz 2005-12-22 2584 } else if > (asoc) { > c4b2893da Marcelo Ricardo Leitner 2018-04-26 2585 > sctp_assoc_set_pmtu(asoc, params->spp_pathmtu); > 52ccb8e90 Frank Filz 2005-12-22 2586 } else { > 52ccb8e90 Frank Filz 2005-12-22 2587 > sp->pathmtu = params->spp_pathmtu; > 52ccb8e90 Frank Filz 2005-12-22 2588 } > 52ccb8e90 Frank Filz 2005-12-22 2589 } > 52ccb8e90 Frank Filz 2005-12-22 2590 > 52ccb8e90 Frank Filz 2005-12-22 2591 if (pmtud_change) { > 52ccb8e90 Frank Filz 2005-12-22 2592 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2593 int > update = (trans->param_flags & SPP_PMTUD_DISABLE) && > 52ccb8e90 Frank Filz 2005-12-22 2594 > (params->spp_flags & SPP_PMTUD_ENABLE); > 52ccb8e90 Frank Filz 2005-12-22 2595 > trans->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2596 > (trans->param_flags & ~SPP_PMTUD) | pmtud_change; > 52ccb8e90 Frank Filz 2005-12-22 2597 if > (update) { > 9914ae3ca Vlad Yasevich 2011-04-26 2598 > sctp_transport_pmtu(trans, sctp_opt2sk(sp)); > 3ebfdf082 Xin Long 2017-04-04 2599 > sctp_assoc_sync_pmtu(asoc); > 52ccb8e90 Frank Filz 2005-12-22 2600 } > 52ccb8e90 Frank Filz 2005-12-22 2601 } else if > (asoc) { > 52ccb8e90 Frank Filz 2005-12-22 2602 > asoc->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2603 > (asoc->param_flags & ~SPP_PMTUD) | pmtud_change; > 52ccb8e90 Frank Filz 2005-12-22 2604 } else { > 52ccb8e90 Frank Filz 2005-12-22 2605 > sp->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2606 > (sp->param_flags & ~SPP_PMTUD) | pmtud_change; > 52ccb8e90 Frank Filz 2005-12-22 2607 } > 52ccb8e90 Frank Filz 2005-12-22 2608 } > 52ccb8e90 Frank Filz 2005-12-22 2609 > bdf3092af Vlad Yasevich 2007-03-23 2610 /* Note that unless > the spp_flag is set to SPP_SACKDELAY_ENABLE the > bdf3092af Vlad Yasevich 2007-03-23 2611 * value of this > field is ignored. Note also that a value of zero > bdf3092af Vlad Yasevich 2007-03-23 2612 * indicates the > current setting should be left unchanged. > bdf3092af Vlad Yasevich 2007-03-23 2613 */ > bdf3092af Vlad Yasevich 2007-03-23 2614 if > ((params->spp_flags & SPP_SACKDELAY_ENABLE) && params->spp_sackdelay) { > 52ccb8e90 Frank Filz 2005-12-22 2615 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2616 > trans->sackdelay = > 52ccb8e90 Frank Filz 2005-12-22 2617 > msecs_to_jiffies(params->spp_sackdelay); > 52ccb8e90 Frank Filz 2005-12-22 2618 } else if > (asoc) { > 52ccb8e90 Frank Filz 2005-12-22 2619 > asoc->sackdelay = > 52ccb8e90 Frank Filz 2005-12-22 2620 > msecs_to_jiffies(params->spp_sackdelay); > 52ccb8e90 Frank Filz 2005-12-22 2621 } else { > 52ccb8e90 Frank Filz 2005-12-22 2622 > sp->sackdelay = params->spp_sackdelay; > 52ccb8e90 Frank Filz 2005-12-22 2623 } > 52ccb8e90 Frank Filz 2005-12-22 2624 } > 52ccb8e90 Frank Filz 2005-12-22 2625 > 52ccb8e90 Frank Filz 2005-12-22 2626 if (sackdelay_change) > { > 52ccb8e90 Frank Filz 2005-12-22 2627 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2628 > trans->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2629 > (trans->param_flags & ~SPP_SACKDELAY) | > 52ccb8e90 Frank Filz 2005-12-22 2630 > sackdelay_change; > 52ccb8e90 Frank Filz 2005-12-22 2631 } else if > (asoc) { > 52ccb8e90 Frank Filz 2005-12-22 2632 > asoc->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2633 > (asoc->param_flags & ~SPP_SACKDELAY) | > 52ccb8e90 Frank Filz 2005-12-22 2634 > sackdelay_change; > 52ccb8e90 Frank Filz 2005-12-22 2635 } else { > 52ccb8e90 Frank Filz 2005-12-22 2636 > sp->param_flags = > 52ccb8e90 Frank Filz 2005-12-22 2637 > (sp->param_flags & ~SPP_SACKDELAY) | > 52ccb8e90 Frank Filz 2005-12-22 2638 > sackdelay_change; > 52ccb8e90 Frank Filz 2005-12-22 2639 } > 52ccb8e90 Frank Filz 2005-12-22 2640 } > 52ccb8e90 Frank Filz 2005-12-22 2641 > 37051f738 Andrei Pelinescu-Onciul 2009-11-23 2642 /* Note that a value > of zero indicates the current setting should be > 37051f738 Andrei Pelinescu-Onciul 2009-11-23 2643 left unchanged. > bdf3092af Vlad Yasevich 2007-03-23 2644 */ > 37051f738 Andrei Pelinescu-Onciul 2009-11-23 2645 if > (params->spp_pathmaxrxt) { > 52ccb8e90 Frank Filz 2005-12-22 2646 if (trans) { > 52ccb8e90 Frank Filz 2005-12-22 2647 > trans->pathmaxrxt = params->spp_pathmaxrxt; > 52ccb8e90 Frank Filz 2005-12-22 2648 } else if > (asoc) { > 52ccb8e90 Frank Filz 2005-12-22 2649 > asoc->pathmaxrxt = params->spp_pathmaxrxt; > 52ccb8e90 Frank Filz 2005-12-22 2650 } else { > 52ccb8e90 Frank Filz 2005-12-22 2651 > sp->pathmaxrxt = params->spp_pathmaxrxt; > 52ccb8e90 Frank Filz 2005-12-22 2652 } > 52ccb8e90 Frank Filz 2005-12-22 2653 } > 52ccb8e90 Frank Filz 2005-12-22 2654 > 0b0dce7a3 Xin Long 2018-07-02 2655 if (params->spp_flags > & SPP_IPV6_FLOWLABEL) { > 0b0dce7a3 Xin Long 2018-07-02 2656 if (trans && > trans->ipaddr.sa.sa_family == AF_INET6) { > 0b0dce7a3 Xin Long 2018-07-02 2657 > trans->flowlabel = params->spp_ipv6_flowlabel & > 0b0dce7a3 Xin Long 2018-07-02 2658 > SCTP_FLOWLABEL_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2659 > trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2660 } else if > (asoc) { > 0b0dce7a3 Xin Long 2018-07-02 @2661 > list_for_each_entry(trans, > 0b0dce7a3 Xin Long 2018-07-02 2662 > &asoc->peer.transport_addr_list, > 0b0dce7a3 Xin Long 2018-07-02 2663 > transports) { > 0b0dce7a3 Xin Long 2018-07-02 2664 > if (trans->ipaddr.sa.sa_family != AF_INET6) > 0b0dce7a3 Xin Long 2018-07-02 2665 > continue; > 0b0dce7a3 Xin Long 2018-07-02 2666 > trans->flowlabel = params->spp_ipv6_flowlabel & > 0b0dce7a3 Xin Long 2018-07-02 2667 > SCTP_FLOWLABEL_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2668 > trans->flowlabel |= SCTP_FLOWLABEL_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2669 } > 0b0dce7a3 Xin Long 2018-07-02 2670 > asoc->flowlabel = params->spp_ipv6_flowlabel & > 0b0dce7a3 Xin Long 2018-07-02 2671 > SCTP_FLOWLABEL_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2672 > asoc->flowlabel |= SCTP_FLOWLABEL_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2673 } else if > (sctp_opt2sk(sp)->sk_family == AF_INET6) { > 0b0dce7a3 Xin Long 2018-07-02 2674 > sp->flowlabel = params->spp_ipv6_flowlabel & > 0b0dce7a3 Xin Long 2018-07-02 2675 > SCTP_FLOWLABEL_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2676 > sp->flowlabel |= SCTP_FLOWLABEL_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2677 } > 0b0dce7a3 Xin Long 2018-07-02 2678 } > 0b0dce7a3 Xin Long 2018-07-02 2679 > 0b0dce7a3 Xin Long 2018-07-02 2680 if (params->spp_flags > & SPP_DSCP) { > 0b0dce7a3 Xin Long 2018-07-02 @2681 if (trans) { > 0b0dce7a3 Xin Long 2018-07-02 2682 > trans->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2683 > trans->dscp |= SCTP_DSCP_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2684 } else if > (asoc) { > 0b0dce7a3 Xin Long 2018-07-02 2685 > list_for_each_entry(trans, > 0b0dce7a3 Xin Long 2018-07-02 2686 > &asoc->peer.transport_addr_list, > 0b0dce7a3 Xin Long 2018-07-02 2687 > transports) { > 0b0dce7a3 Xin Long 2018-07-02 2688 > trans->dscp = params->spp_dscp & > 0b0dce7a3 Xin Long 2018-07-02 2689 > SCTP_DSCP_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2690 > trans->dscp |= SCTP_DSCP_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2691 } > 0b0dce7a3 Xin Long 2018-07-02 2692 > asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2693 > asoc->dscp |= SCTP_DSCP_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2694 } else { > 0b0dce7a3 Xin Long 2018-07-02 2695 > sp->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2696 > sp->dscp |= SCTP_DSCP_SET_MASK; > 0b0dce7a3 Xin Long 2018-07-02 2697 } > 0b0dce7a3 Xin Long 2018-07-02 2698 } > 0b0dce7a3 Xin Long 2018-07-02 2699 > 52ccb8e90 Frank Filz 2005-12-22 2700 return 0; > 52ccb8e90 Frank Filz 2005-12-22 2701 } > 52ccb8e90 Frank Filz 2005-12-22 2702 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation