Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp2200734pxf; Sat, 20 Mar 2021 07:31:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxS+EUCJ8nhlPK+x0vPgThNGg7D1RpmLDuGfh3wlRDLX4WwGr7P218+TY84Sl7n1yIpUKa+ X-Received: by 2002:a05:6402:2d0:: with SMTP id b16mr16048352edx.194.1616250682738; Sat, 20 Mar 2021 07:31:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616250682; cv=none; d=google.com; s=arc-20160816; b=p27RUipw7XzAoMhrfsHlINVbLJltLwcWNbAWG52kV0K9ck+0mDzIkkg00gN2b0JYmd 1DtX5BlyvEDHP/nIVIqy/kXY3/uKuYLe6NE4kYQvTSQquQDpu3mqW07nHzsMAF2EniBt LYjsQrrGPO2knfUr9sLZECACzCd0sBRvynxTBT0NF0e74d3LnJaUAv8RzXaF5b0RGIiU 7RsHfVoYc3TT/Lj29gGpY/xfbF0h/F2cUrWTty9ocoS6MFGKoj44HF2YWDowpQ8YIiLH XKgdJZlO7UbuHiZingzkUOzHtywJujesVfPWEniYIKtGBQ1Nc6JDrm95lU0lSFYJp8c5 ZOEg== 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:mime-version:message-id:date :dkim-signature; bh=ZJIhDl3dbfmuJaK3uoX7aKesDYTkhJ/dpFprfzrrMMQ=; b=zuwP4/Hw2sSkNY47WAGEsNMMwm2oZIjX2aSiHezdIePsYX8oyjvVaQoRMd3ceSEAB+ 3FMgJ7jkFk1lU8eDa0qFIGRjcVqivZ8DJQpXa1GU/HojL3mtR3cuJYgqr1KYNaoDqCPk Mr3rg0AMDboTGCmd6EOO9j9Fm0JxvtmMaCJvWwLF1bVpF505LDpyBQLxEaWLcIxADyn0 /dX537uQCJEMULMimIz4aucWRAziY3gwlR4Pj0FEnqXWDMtNBMwpJRSRy14hBM7/+IXa z1PO2dTPEw6K41sbtusp3RB0TZd5XHUJ7bJxkGJ1mPlz0kg2UYaJtqb8AKO8B7aS7i7k spCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=iekiG38R; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c7si7267141ejp.450.2021.03.20.07.31.00; Sat, 20 Mar 2021 07:31:22 -0700 (PDT) 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=@google.com header.s=20161025 header.b=iekiG38R; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229887AbhCTO3c (ORCPT + 99 others); Sat, 20 Mar 2021 10:29:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229793AbhCTO25 (ORCPT ); Sat, 20 Mar 2021 10:28:57 -0400 Received: from mail-ed1-x549.google.com (mail-ed1-x549.google.com [IPv6:2a00:1450:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7346C061574 for ; Sat, 20 Mar 2021 07:28:56 -0700 (PDT) Received: by mail-ed1-x549.google.com with SMTP id f9so20209755edd.13 for ; Sat, 20 Mar 2021 07:28:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=ZJIhDl3dbfmuJaK3uoX7aKesDYTkhJ/dpFprfzrrMMQ=; b=iekiG38RMHMqotvnjsWADzkjN8LBZy0T5PdAh2/x4zxQG+/gnSDXsQbaHLg157U03g MK7BqYXwa9Z5YExdy1JA9WhBQxV5iWiY3PjtF1D7k9FJpAFVczlqUWT5Ygo/N3jcVHQK kltkdr55DkCbVjC6N+dU2Ylkab6+7Z8EfE2QN6UXUlmzLd4HUik6Ygo+KqdvJzPdZSMP 46Q/GrrvOsa3okgJmBjij3e8EfhVwCtYR5xLOAlUqhSAtSyxIn1iFaHHiJy9eTAl68pX KyW0aHGVXzexYr8eD027p6CGsaOHDJYasQsfVa4lKTXqnz01ooDZJmOsJHeUBfnuTIEv zWeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=ZJIhDl3dbfmuJaK3uoX7aKesDYTkhJ/dpFprfzrrMMQ=; b=o/j/kMB5Wk5zvrLndUzL0p7G2kYeeBeWEhIrJ++Qw20sHsvT4XB2cgXA23t6cXSsiw aYwOk4cPTBYF5ydLoN6IHN6JA2VIM+6da8WoKqD7UGKu4Yl4RJNXyAZdSNqRBZC1bYT9 XchkiYiJjffcvNAY+BgQWoMHlD1oA8szNyXARPhbGPoyo+C/Tne/FLX2LtkPXe2mpzzt SVby9CCl3L/IKWKA0JdLMUoQ/ag9bd9fSejXaRdIyY6i/D1QhDjgR+tsm1eRKRuZDweN cxdcvUxtCr5d9xgP7alpkI/ECDaBstUa6P04AQmcRwft1vSQpOPUKZIlcSqbT6uzkO+F MYhQ== X-Gm-Message-State: AOAM53327U51F+HGQwXFTS1nhEnjC84cDNeLZxrMo8Y+39qm1dPpwThI 26krfPYpf7hHgQVUvVPPgzXUiBcCrLCi X-Received: from dvyukov-desk.muc.corp.google.com ([2a00:79e0:15:13:84f2:bf18:7ada:738e]) (user=dvyukov job=sendgmr) by 2002:a17:906:b159:: with SMTP id bt25mr9871210ejb.364.1616250535324; Sat, 20 Mar 2021 07:28:55 -0700 (PDT) Date: Sat, 20 Mar 2021 15:28:51 +0100 Message-Id: <20210320142851.1328291-1-dvyukov@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.0.291.g576ba9dcdaf-goog Subject: [PATCH] net: make unregister netdev warning timeout configurable From: Dmitry Vyukov To: davem@davemloft.net, edumazet@google.com Cc: Dmitry Vyukov , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org netdev_wait_allrefs() issues a warning if refcount does not drop to 0 after 10 seconds. While 10 second wait generally should not happen under normal workload in normal environment, it seems to fire falsely very often during fuzzing and/or in qemu emulation (~10x slower). At least it's not possible to understand if it's really a false positive or not. Automated testing generally bumps all timeouts to very high values to avoid flake failures. Make the timeout configurable for automated testing systems. Lowering the timeout may also be useful for e.g. manual bisection. The default value matches the current behavior. Signed-off-by: Dmitry Vyukov Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=211877 Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- net/Kconfig | 12 ++++++++++++ net/core/dev.c | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/net/Kconfig b/net/Kconfig index 8cea808ad9e8d..ebb9cc00ac81d 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -461,6 +461,18 @@ config ETHTOOL_NETLINK netlink. It provides better extensibility and some new features, e.g. notification messages. +config UNREGISTER_NETDEV_TIMEOUT + int "Unregister network device timeout in seconds" + default 10 + range 0 3600 + help + This option controls the timeout (in seconds) used to issue + a warning while waiting for a network device refcount to drop to 0 + during device unregistration. + A lower value may be useful during bisection to detect a leaked + reference faster. A larger value may be useful to prevent false + warnings on slow/loaded systems. + endif # if NET # Used by archs to tell that they support BPF JIT compiler plus which flavour. diff --git a/net/core/dev.c b/net/core/dev.c index 0f72ff5d34ba0..ca03ee407133b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -10405,7 +10405,9 @@ static void netdev_wait_allrefs(struct net_device *dev) refcnt = netdev_refcnt_read(dev); - if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) { + if (refcnt && + time_after(jiffies, warning_time + + CONFIG_UNREGISTER_NETDEV_TIMEOUT * HZ)) { pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n", dev->name, refcnt); warning_time = jiffies; base-commit: 5aa3c334a449bab24519c4967f5ac2b3304c8dcf -- 2.31.0.291.g576ba9dcdaf-goog