Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3995759pxu; Wed, 9 Dec 2020 06:02:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJxpEq+2X0KrdP3EscYDkyzsiVu+vSDMBKsNYK3C5vAPC89qR4eRbal1l8AzwTwkqd+ejmjL X-Received: by 2002:a50:ab59:: with SMTP id t25mr2141426edc.364.1607522523684; Wed, 09 Dec 2020 06:02:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607522523; cv=none; d=google.com; s=arc-20160816; b=qSbO7LgM3qoBaeCh9bMRYhTRdykMJu/OK+Jn+SNK3MfY3p2jF0IQy6GQxET0G8IcSJ M5LIgDwTnsL2tBo/3P88s3VngvYIVrVgSc1A517KoHc4otL7csjeVW3BIyFbECBYIQmI dK9s4Z/aVSpuDI8FZRz2cZBoTvy0NDNr9XmHGeGC6JhdQhn1XMdgRBru6O98VYuX7QYD 5bbNp3F/JzjNFFfCkZv5tbzP86ukz1OXJU+47J5xKgbhZhL6+JlIdvFklpyBRdhUYFqc w5bRCiHA3Ilj8bQic9Ar+KF8ejmQz+/vd1HYh9GpxYoXXgDqprGstfAxDfha+6SfWkHH 59Qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=fixlBjRW2kL0YWNC9K96DmtICObU9iPBUY8f82+kwnQ=; b=k1f+M1x4j2M1kPJH2Tj7+6ldFfLRkKk0xOUREVDqKO4dTX4WSpvvkl2ZzFKB0NwWOs PZmgl/s9YRZcM8BsBuO7fi9lC/HjNzPo7BVZ0rKuCrQtgDZXzMpuDJOOvttboAr9fs+Y iTVlqTUafBxQ9NC62yWALhfQlKwdH6gweUjFNZICzWyV5uGnAnBWXDozFiCSVqrQ7N21 43gBYHJWRA2uAyukJtUOGSgEkqpvcTND8A6GMJzQInyb1waoEbMRk1A/S/kbN9bKgS9n W9ekh/14FeX+3X0kL01CNgu6MGoMJFdyScWBfzPkCgHKF7fLJsNDqzqRky/kyi5Dn7+n U/MA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=TrReyXGi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn6si722776ejc.234.2020.12.09.06.01.34; Wed, 09 Dec 2020 06:02:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=TrReyXGi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726851AbgLIIQx (ORCPT + 99 others); Wed, 9 Dec 2020 03:16:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725765AbgLIIQt (ORCPT ); Wed, 9 Dec 2020 03:16:49 -0500 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA58CC061793; Wed, 9 Dec 2020 00:16:09 -0800 (PST) Received: by mail-pf1-x443.google.com with SMTP id w6so534291pfu.1; Wed, 09 Dec 2020 00:16:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fixlBjRW2kL0YWNC9K96DmtICObU9iPBUY8f82+kwnQ=; b=TrReyXGijHi4qX1gffQA287sRLgrEyWVqW6+UeQsOJNt69VPFiKTjwJAOuJHL+XdPF 6OxxV/MAPyLN23bwoYNL6A4JVCRlo2oWv4RVfYrT2Ug3EZMslV00XwXeN8xyp1pDcMdM UIyb9GBUSZYgqAGwukI82h7pPhkfr0xRlAaQ1cYUqHR0Ap3+SfAE+1wmbc2b+Fbf3bQv GqhbxUzwTPx1D6zA6vOZcn0U2CqIlQ0ZHIZnWyxa3TGqQVzBydDyAh+vgriWOCMHfmJT qHnDOmaeOkpewzL6bVp7yB53160hOewXhV94eaFBkbDDI+sZACXo825ckKZYKAKhP590 Go4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fixlBjRW2kL0YWNC9K96DmtICObU9iPBUY8f82+kwnQ=; b=Ah6EyqZp/4BMSJ0oy2hcPEvBSxd98X2BM1IJyD+C4iE2BGaBd1dFZmeSTPiPkXaLe7 H1b95cOrTbOpHzyzbkMKvGy0XGzxLYtdFBUNngEehYXjamcGDMQ+/hkn0KMQ0AmaA667 wRKpeskYP12EgmJOvTEzcv3N2XLICLvNENi66iZUQpAJop0+P32fpz7PUkkajakQui57 Oqx9kfWsvT6us8KekazOQOaEEwiCtSiW77kGGrj0nmakAeKo4IybRVOfpk1DKe1Tk5S7 EOHomaRQf3yVbdomZ6g7a1gEfYQdsEaSfJo2g9SCJGGJDkHRY4lxgjnjGvk9wDrQXtZH OiSA== X-Gm-Message-State: AOAM531xf4JZWC2qaN0i7SZBneQF3U4oJ/fUnzsy8ZHtb8IWIIRoKotf F0Uk5oDwIdlP2gvUMp2YLLOzxbgAE04= X-Received: by 2002:a63:e94f:: with SMTP id q15mr951518pgj.401.1607501769313; Wed, 09 Dec 2020 00:16:09 -0800 (PST) Received: from shane-XPS-13-9380.hsd1.ca.comcast.net ([2601:646:8800:1c00:ac46:48a7:8096:18f5]) by smtp.gmail.com with ESMTPSA id f21sm1389206pgk.18.2020.12.09.00.16.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Dec 2020 00:16:08 -0800 (PST) From: Xie He To: "David S. Miller" , Jakub Kicinski , linux-x25@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Martin Schiller Cc: Xie He Subject: [PATCH net-next] net: x25: Fix handling of Restart Request and Restart Confirmation Date: Wed, 9 Dec 2020 00:16:04 -0800 Message-Id: <20201209081604.464084-1-xie.he.0141@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 1. When the x25 module gets loaded, layer 2 may already be running and connected. In this case, although we are in X25_LINK_STATE_0, we still need to handle the Restart Request received, rather than ignore it. 2. When we are in X25_LINK_STATE_2, we have already sent a Restart Request and is waiting for the Restart Confirmation with t20timer. t20timer will restart itself repeatedly forever so it will always be there, as long as we are in State 2. So we don't need to check x25_t20timer_pending again. Fixes: d023b2b9ccc2 ("net/x25: fix restart request/confirm handling") Cc: Martin Schiller Signed-off-by: Xie He --- net/x25/x25_link.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/net/x25/x25_link.c b/net/x25/x25_link.c index f92073f3cb11..57a81100c5da 100644 --- a/net/x25/x25_link.c +++ b/net/x25/x25_link.c @@ -58,11 +58,6 @@ static inline void x25_stop_t20timer(struct x25_neigh *nb) del_timer(&nb->t20timer); } -static inline int x25_t20timer_pending(struct x25_neigh *nb) -{ - return timer_pending(&nb->t20timer); -} - /* * This handles all restart and diagnostic frames. */ @@ -70,17 +65,20 @@ void x25_link_control(struct sk_buff *skb, struct x25_neigh *nb, unsigned short frametype) { struct sk_buff *skbn; - int confirm; switch (frametype) { case X25_RESTART_REQUEST: switch (nb->state) { + case X25_LINK_STATE_0: + /* This can happen when the x25 module just gets loaded + * and doesn't know layer 2 has already connected + */ + nb->state = X25_LINK_STATE_3; + x25_transmit_restart_confirmation(nb); + break; case X25_LINK_STATE_2: - confirm = !x25_t20timer_pending(nb); x25_stop_t20timer(nb); nb->state = X25_LINK_STATE_3; - if (confirm) - x25_transmit_restart_confirmation(nb); break; case X25_LINK_STATE_3: /* clear existing virtual calls */ @@ -94,13 +92,8 @@ void x25_link_control(struct sk_buff *skb, struct x25_neigh *nb, case X25_RESTART_CONFIRMATION: switch (nb->state) { case X25_LINK_STATE_2: - if (x25_t20timer_pending(nb)) { - x25_stop_t20timer(nb); - nb->state = X25_LINK_STATE_3; - } else { - x25_transmit_restart_request(nb); - x25_start_t20timer(nb); - } + x25_stop_t20timer(nb); + nb->state = X25_LINK_STATE_3; break; case X25_LINK_STATE_3: /* clear existing virtual calls */ -- 2.27.0