Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2739480imj; Mon, 11 Feb 2019 07:46:46 -0800 (PST) X-Google-Smtp-Source: AHgI3IYkn3ly7FRGLe/xWWw9lFPKwHFNXZBkrEYxKKv2jduhcZLsu9ywGzeWRyd6EFf9R8I4jwwk X-Received: by 2002:a63:d703:: with SMTP id d3mr6138976pgg.167.1549900006335; Mon, 11 Feb 2019 07:46:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549900006; cv=none; d=google.com; s=arc-20160816; b=IKe13zyYRDixKzehGR1PWyLjRMyY8uFjkbCceuleOb5yygATKiNNTUT0J36yfwehDh xi2LDiiYAAJBF3P7wgU9ElXvzOxh+cHAcDExfdrSp/7KPxP0IEpLcvCBtmgDcNFeJ/mW M3qM7JRe8lfKp4ozp53HjuNurmXe22HRrj5Z7KLG2JnSTo6OpHp/GVULgzvm2yLRPV7V N52xGtbSriaPhvlM7rxiHDkB5W+CeKxEcU6kYG8wi4d5gTObD0/PKrC5/xM2bKIEwYeM 1NxuigTcZb3DnytsjIttAtDg4Bka1NVpa7EtVr0y/BptID2diYqD8Gjsk9SNPSXjdw8t KB4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=62abDBWDChAvceyz33jA/FvkFr+NpOnvdpGTStxb7GQ=; b=bdO87AV6d8XibiCHWFt2H2hTHH5VgnUpsP99m+O32cwy6X4ciQLmiMLXd/HcohLikq TROSlnPLJxBddBi+TcIELscAE8VlnJXn7pNkCxKLXXp5Q1p06dSxHe6gnF8CZoM56oyv fRuxoZbr71iN16E0P8Uq6Ka5F8l3kROwukpju0Kt3s+6YMD44t6mMmDh1P8/zMR2iROX GCNfqR6rE3H+4JK6U2aBPW14K+XZcDHZb6cegF361yn1Xu5VLYPpxM/GPcJGg7fJqcBx kpowMeP79yR198mL2EURj2/eCJiH0eMogMxY+22PQbGWt00K8W5rSXEnHUpgjZUgubAb c48g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=x6iox4ml; 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 p80si10200134pfi.124.2019.02.11.07.46.30; Mon, 11 Feb 2019 07:46:46 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=x6iox4ml; 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 S1732591AbfBKOnQ (ORCPT + 99 others); Mon, 11 Feb 2019 09:43:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:55342 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732167AbfBKOnL (ORCPT ); Mon, 11 Feb 2019 09:43:11 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 01F9D20700; Mon, 11 Feb 2019 14:43:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549896190; bh=5Dqnx0N1yBymIkiPe2ClsVOuJfiiZ1R1JLxZJ3Qy8XQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=x6iox4mlQf1JJo0GZmb/XlILnzEVziGHJ6jZACYmtF7bLvv6a0OkFg7IBkrUcZ0+r GswCFpO/WcBzgvgAh378u25KAyQ+rVx/k/Udl8EPQIP6f5T1S65kVuFBDRS1pQOvGj XFbQ49Ukh56JPJtzaPGAySIq4gDfZhelYNni4so4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jon Maloy , Hoang Le , "David S. Miller" , Sasha Levin Subject: [PATCH 4.19 103/313] tipc: fix node keep alive interval calculation Date: Mon, 11 Feb 2019 15:16:23 +0100 Message-Id: <20190211141900.741087187@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190211141852.749630980@linuxfoundation.org> References: <20190211141852.749630980@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit f5d6c3e5a359c0507800e7ac68d565c21de9b5a1 ] When setting LINK tolerance, node timer interval will be calculated base on the LINK with lowest tolerance. But when calculated, the old node timer interval only updated if current setting value (tolerance/4) less than old ones regardless of number of links as well as links' lowest tolerance value. This caused to two cases missing if tolerance changed as following: Case 1: 1.1/ There is one link (L1) available in the system 1.2/ Set L1's tolerance from 1500ms => lower (i.e 500ms) 1.3/ Then, fallback to default (1500ms) or higher (i.e 2000ms) Expected: node timer interval is 1500/4=375ms after 1.3 Result: node timer interval will not being updated after changing tolerance at 1.3 since its value 1500/4=375ms is not less than 500/4=125ms at 1.2. Case 2: 2.1/ There are two links (L1, L2) available in the system 2.2/ L1 and L2 tolerance value are 2000ms as initial 2.3/ Set L2's tolerance from 2000ms => lower 1500ms 2.4/ Disable link L2 (bring down its bearer) Expected: node timer interval is 2000ms/4=500ms after 2.4 Result: node timer interval will not being updated after disabling L2 since its value 2000ms/4=500ms is still not less than 1500/4=375ms at 2.3 although L2 is already not available in the system. To fix this, we start the node interval calculation by initializing it to a value larger than any conceivable calculated value. This way, the link with the lowest tolerance will always determine the calculated value. Acked-by: Jon Maloy Signed-off-by: Hoang Le Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/tipc/node.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/tipc/node.c b/net/tipc/node.c index 488019766433..32556f480a60 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -624,6 +624,12 @@ static void tipc_node_timeout(struct timer_list *t) __skb_queue_head_init(&xmitq); + /* Initial node interval to value larger (10 seconds), then it will be + * recalculated with link lowest tolerance + */ + tipc_node_read_lock(n); + n->keepalive_intv = 10000; + tipc_node_read_unlock(n); for (bearer_id = 0; remains && (bearer_id < MAX_BEARERS); bearer_id++) { tipc_node_read_lock(n); le = &n->links[bearer_id]; -- 2.19.1