Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp7973181rwb; Mon, 12 Dec 2022 23:48:19 -0800 (PST) X-Google-Smtp-Source: AA0mqf5MJ6/u61sThqH6ygZvlv1mGiecyx2qkpcX0L/7LOj6lXHdIJZnryY1FnPa2hgRqFn44bqu X-Received: by 2002:a05:6402:10d7:b0:463:d0c:290c with SMTP id p23-20020a05640210d700b004630d0c290cmr17307229edu.37.1670917699416; Mon, 12 Dec 2022 23:48:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670917699; cv=none; d=google.com; s=arc-20160816; b=OnMZHoY0ueoAad0DKTvnBvDOgIvhgoSa2Hhp/+rGeUv/Z3pxFq2Lwf0y7LkiJASehR 77t43lKkydgIWdXJrtdnVg3cDMM4QwYQRec/hPvRgXwhXaiSiI8Rqx5JHo7TnXtJ7G9w 8uuAtGFAbbW0nzhT4E8/sWgO/5HYcx0U9s0vZLRvSlcqjKODtFQSIi5A8fS+0K4Ijiex UffE4ci+ACgOBwtphkRISCkfdbijlJbMVsiy8T5cVjXZbU5JmEKHRCBpex7OeJil6HXn bc0W+6tWfiN6Zy3H4R2VM34q12KxvlpH1cIY85EnfMAFsiQ86Lgdt39QRVhytBn4PTtp N+Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=i6QWiJwRe9f0JGDfy4JA1PfdSVRPrblGsjegNHexZOw=; b=tXwrX90nado9ACdJ9puITSMlGQTKzkBByP4Lra5k6WN8RKZekN83jK6o8+zkdXwogV X3/KA7OMeBEaH6ULwwa7EjrUbWE3gb4PhW6lDw6StucUPdx+wKQ/bPsbrT4k/fuQ2v9K h6lHQjTKEIxZA9QPXYUyVTq2b62ycj6Dvv/yC6gwH5pAAz7yR30k7sHId4IR1Z9N7SS2 Psc+x3RF2XSLV+yYt71GxcX3nrcjLTbfJYoVDg9Cd9JfJ8JqmyEqPH86zjR9P/hIXvcC ITzs3ETOchbbFOuR3/Si3h1XD0cM9v/dL/CeoPEtbkPxOnVkc8O66OM8CULkXA0/6UBM AiKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OTU2S16t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dk21-20020a0564021d9500b00461c3758704si8911590edb.36.2022.12.12.23.48.01; Mon, 12 Dec 2022 23:48:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OTU2S16t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234687AbiLMHiK (ORCPT + 74 others); Tue, 13 Dec 2022 02:38:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234681AbiLMHiJ (ORCPT ); Tue, 13 Dec 2022 02:38:09 -0500 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87EB21BEB4 for ; Mon, 12 Dec 2022 23:38:08 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id m13-20020a170902f64d00b001899a70c8f1so12606481plg.14 for ; Mon, 12 Dec 2022 23:38:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=i6QWiJwRe9f0JGDfy4JA1PfdSVRPrblGsjegNHexZOw=; b=OTU2S16tVfSajllMUhTa9aKhUqIAo/c7aUL2k1yT/cZ7YXFSxbO39kh295Y0hjSzWJ wfm3804m3bfiu66tb44oq/inqmaBvsy5eRmU8VmLdjA8UbjYjPwARyzlSrVKQnptSsMc LiEN1UCz8VVZFlD6xtq+wYThvIgB6yi9/HdMvZmiyZapST0jMjd/Ui6OuKcOLqAxpxlU NLPgBInuXVogfauMRpOeTzIw0OQNaKmVY/9jUMalddHQCqM5GwUogDKFrLHCA0+8saNr SS0UYJTWy63ZuKhKEUnfNSgPmRRvVYTGigsb0F17kKInV502/XqAWTtlbaTMr048/uaT BoXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=i6QWiJwRe9f0JGDfy4JA1PfdSVRPrblGsjegNHexZOw=; b=j0Ls1loPB47yg56pAWvu2Vs1CyS/QhwQLpAK8aJFthbK+QTc23GvIjL6o3qkTOA07H mI5zbTbf8d5RurxYC4UVOy4NbiS84MMXOLy1K/WDLC8AThDA5wIXcAWDPBxIkvhVX5HI eep5uDq1uAuN6y0esCS2yklpzQILyxecUDk+Yc3wLv+t2zVecc5GEkDM5IP3DNwulCWW aBgHgW/okZH8VKfGEBqcGtfjYboMfQ/TFlFKNv/aACKTPsNXgW2cBVM1qxCTXWkdVvtF bljqGEAn2yuWtDBZ3b29x8ZFsBwn35qVJwaG+hyWNeG5/LSMVimPjIPP1I1HtghQ5YjR yM/A== X-Gm-Message-State: ANoB5plUK7fvthM/wU6va1qOLd9YafSGIjOXGiYjS60j8LedS32yz8Xe ruBHBvGN9YDotU/GkVRdSD/5Wb0Svw== X-Received: from decot.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:5fa2]) (user=decot job=sendgmr) by 2002:aa7:80c4:0:b0:574:8c08:595f with SMTP id a4-20020aa780c4000000b005748c08595fmr66938029pfn.38.1670917087855; Mon, 12 Dec 2022 23:38:07 -0800 (PST) Date: Mon, 12 Dec 2022 23:38:01 -0800 Mime-Version: 1.0 X-Mailer: git-send-email 2.39.0.rc1.256.g54fd8350bd-goog Message-ID: <20221213073801.361500-1-decot+git@google.com> Subject: [PATCH v1 1/1] net: neigh: persist proxy config across link flaps From: David Decotigny To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Nikolay Aleksandrov , David Ahern , "Denis V. Lunev" , Daniel Borkmann , Chen Zhongjin , David Decotigny , Yuwei Wang , Alexander Mikhalitsyn , Thomas Zeitlhofer Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: David Decotigny Without this patch, the 'ip neigh add proxy' config is lost when the cable or peer disappear, ie. when the link goes down while staying admin up. When the link comes back, the config is never recovered. This patch makes sure that such an nd proxy config survives a switch or cable issue. Signed-off-by: David Decotigny --- net/core/neighbour.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 952a54763358..5ad7ac674daa 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -426,7 +426,10 @@ static int __neigh_ifdown(struct neigh_table *tbl, struct net_device *dev, { write_lock_bh(&tbl->lock); neigh_flush_dev(tbl, dev, skip_perm); - pneigh_ifdown_and_unlock(tbl, dev); + if (skip_perm) + write_unlock_bh(&tbl->lock); + else + pneigh_ifdown_and_unlock(tbl, dev); pneigh_queue_purge(&tbl->proxy_queue, dev ? dev_net(dev) : NULL, tbl->family); if (skb_queue_empty_lockless(&tbl->proxy_queue)) -- 2.39.0.rc1.256.g54fd8350bd-goog