Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp641379imm; Wed, 29 Aug 2018 08:33:48 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZ1nJeFze+IgHsUXAOoHyMCkkSxL8k5SWFpOapeIfk4DOulO/ThCYoSzFJL3dpCxf/GmQLA X-Received: by 2002:a62:ac12:: with SMTP id v18-v6mr6581283pfe.126.1535556828190; Wed, 29 Aug 2018 08:33:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535556828; cv=none; d=google.com; s=arc-20160816; b=ApgQWTIJXqvx2iwHukUL71uTaIM7NkGEeW046/e8I2vj4HcOKWSzfLJJ1w7a9GO80b kY3CL62+lR9wUA6XUEAqaAfyYv1epfI4lffzK7E1mtu/3hMoG+EH2yuJcDT9F6Az3/OE rZuaIa7uCxJVnfLBbpUtWMotnbL6pVBKj2gZEoDGjD7omm5eG0Z375lKuihnG/JVk+BK EhwIoKTzw94CElb833qfxrh2+crihRiCNij4e7EaDyhdak2uFS+Y5N5zngjJevHatmx6 g5SnwQ9+0sPtEAFeAn+DiVzLCk4tS/+8LdoXwLRRJenqj4TsstUnVZ5bm+uCluUrqqbK DMvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:message-id :subject:cc:to:from:date:arc-authentication-results; bh=HxSQ4RdZm2u7oNx/0MfvFOV2m+REzi1sfYLTCgr7n+Q=; b=BzO878TWtvzar9oqq7szkwUImZIg2BX9LRaX9Ow31ACVUHucAM93c4gyEDwsjkTScr q1tzcU8Rtg4SrbbMNzwbWO9aVXkhRaKS4RKsvpbHLK7pTeJ5eWZTj1mBbNJVlMOktJN2 cdnbh3ky7SM9ll2ARfQCSpgS50oTkQEgLiE+eVJ98kmyHGNROTE09AOn1SGcxrTL2Ffr jpQkNzuOqt+CT4OlJ+TQ26YBSFhVsAynHrQPkAzX3aSJfB1MVLDiEVjPHLNirhg4N1wW xxP/0CDVvY2qYZuxTE88bvNsIywYDHN9ia0lG5XcyFdWpOh1OdMOY2etdJQVyfoxL0JO CJDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k126-v6si3832953pgc.34.2018.08.29.08.33.32; Wed, 29 Aug 2018 08:33:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729120AbeH2T3u (ORCPT + 99 others); Wed, 29 Aug 2018 15:29:50 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:54897 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727204AbeH2T3t (ORCPT ); Wed, 29 Aug 2018 15:29:49 -0400 X-IronPort-AV: E=Sophos;i="5.53,303,1531778400"; d="scan'208";a="277119373" Received: from unknown (HELO hadrien) ([208.181.63.202]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Aug 2018 17:32:09 +0200 Date: Wed, 29 Aug 2018 08:32:08 -0700 (PDT) From: Julia Lawall X-X-Sender: jll@hadrien To: Xin Long cc: linux-kernel@vger.kernel.org, kbuild-all@01.org Subject: net/sctp/socket.c:2681:6-11: ERROR: invalid reference to the index variable of the iterator on line 2661 (fwd) Message-ID: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. julia ---------- Forwarded message ---------- Date: Wed, 29 Aug 2018 22:02:39 +0800 From: kbuild test robot To: kbuild@01.org Cc: Julia Lawall Subject: net/sctp/socket.c:2681:6-11: ERROR: invalid reference to the index variable of the iterator on line 2661 CC: kbuild-all@01.org CC: linux-kernel@vger.kernel.org TO: Xin Long 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