Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp194941pxk; Wed, 16 Sep 2020 23:55:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwK/kPnJkq5MtL2PQl7cAhIrcOex4UqmUAE7XFiHdnAyMkgLFqv4rgnQ2ylAgel8fldHaEq X-Received: by 2002:a50:f28b:: with SMTP id f11mr30817711edm.44.1600325712729; Wed, 16 Sep 2020 23:55:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600325712; cv=none; d=google.com; s=arc-20160816; b=JYGbjSe86Lcb24ESzNyBWKwQxKyiNB5yEv1tLKANFk/4lENh5RTtV3WwxWN7fDz58u h+pHnb79e4jkBZWLEZRDttSWCnKK4cPOeZGzFDA7Fjyybf5DkI9HU9zZo5ngNCQG1htv Z2x7ofXRhjcwFVEo+F4SfHQWUmCS+fM4weKXgcnZL24JO0vegnLBcAWkQojlPMMulJ6Y dQn19U2iF7iWP4HCPEynu/UuEAp18tMRhqWIjEUeSpuLyQqQYjMrENCQuyFhbt2lAkTR xs8EImTellffeRO0p1t9CAWlZNY/RPpY1UlK+7Zz+jXoSxXwznWib1wbuq93urFVCqGT ampw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=WmO3lehPU5xgp/AaU9lW0DTy2BiuALKSxjt4YpqCbPQ=; b=WvA1sfXztDJaz3QPVCo8MwuQF04Fx/TlBCDDgfY3SWkFEUyjm37LA41jSwqAjLcfbj F7YK1iMPqIQyjD2zLTzMyUy1BgyX9RAWjxIPvsAsgEenFl8eW9duVh4OtiqCK8NIg5yE i7AyrMXidooXA37+q2Duthrz2LMEDhE6ZFoplIOinKX20G3xEU/cLPUVFURAtnfT9+XE Bg+E4EK7saU5Mu0o89W5m6Qt4D9SxDkQxbG8cgPUGGb+MTDAnwjdrlpBrxpBMzZOP+yB I49o01vCeyptluPtng823lEqeTgJd6rjwFNr2R8/y5dCSylldQZnAUIE5M74GZPUxY2y U5Og== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=OXBVMolK; 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 cf25si13790397ejb.67.2020.09.16.23.54.48; Wed, 16 Sep 2020 23:55:12 -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=OXBVMolK; 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 S1726196AbgIQGv7 (ORCPT + 99 others); Thu, 17 Sep 2020 02:51:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726106AbgIQGv6 (ORCPT ); Thu, 17 Sep 2020 02:51:58 -0400 Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A102AC06174A for ; Wed, 16 Sep 2020 23:51:57 -0700 (PDT) Received: by mail-il1-x142.google.com with SMTP id t18so1236031ilp.5 for ; Wed, 16 Sep 2020 23:51:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WmO3lehPU5xgp/AaU9lW0DTy2BiuALKSxjt4YpqCbPQ=; b=OXBVMolKXu9oHOH/RIVylOl8xeQHwn7gTVs/vMb1xmk0j8xZdei1Po6uQNaOcCi0rz k/Jz5O9iQZos06Ktg9342AdyYAQwGZNtt26Mwkfv0C35hYQyYctENMR8d/OqQCdpTbS4 QBVmNA9+8VsrdPxfGbmfu219GQDfZJ9EL/j/jHq9WnPHJTfkYv+T4y1pLQUGrLNHA1yd Mu7KIvQVM+I6p+UhhZw2Ji0gC497GSvFD0it8TrSqlO5Fam7Zk3fnx1S3HpBdVjy6wU/ saKkt6Ejo4b5N/r+CYf70DfONvV0JcvnKQ7ZIyaC2Sr5OoAh9KEn6JuJd1g+gpIB7kCk SIsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WmO3lehPU5xgp/AaU9lW0DTy2BiuALKSxjt4YpqCbPQ=; b=W3T5LmhkXXfgSRw7sz+6H7qDEcXYqSaYoxL3dXpwWMMkGDsOe8FDw37J2+QVj66IFW U4bdsEAof3EUKIMkmPHTpBpNvhj3Ah5WFJHrXRjedq7YdrU6qqMFL6rvnaK/x6PiYrbz 5PGKXdGUMbE6Eo/WId47qs/vcz6s/ye3vlQgrpQdWHidFbvYgjHD1RXwsD9ls87XDrVe nVs0nhyjgdTLogTiZlAb/Dg24/59KQByHjVNnmf5WXtgkLlXhQAFLxglJusit1NRdTnQ GDPye/j+HBKtOSunAG8FqUJvdsmV/Zo+CRiXOVEMpKlmtZMQlzQUtxvxHPu3TXiKLzPQ iTcA== X-Gm-Message-State: AOAM532wD1ouBr3gU9kwSwTiwC+kmzzGaGrRh7zMTIP+MM34wpJUwbQr mZf6ikkz0lbEjAidfxTCvXBijkzKeHK/hd8SpNgCFg== X-Received: by 2002:a92:d48b:: with SMTP id p11mr19958635ilg.69.1600325516756; Wed, 16 Sep 2020 23:51:56 -0700 (PDT) MIME-Version: 1.0 References: <20200917020021.0860995C06B9@us180.sjc.aristanetworks.com> In-Reply-To: From: Eric Dumazet Date: Thu, 17 Sep 2020 08:51:45 +0200 Message-ID: Subject: Re: [PATCH] net: make netdev_wait_allrefs wake-able To: Francesco Ruggeri Cc: open list , netdev , Cong Wang , Taehee Yoo , Andrii Nakryiko , Jiri Pirko , Alexei Starovoitov , Jakub Kicinski , David Miller Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 17, 2020 at 8:33 AM Francesco Ruggeri wrote: > > > static inline void dev_put(struct net_device *dev) > > { > > + struct task_struct *destroy_task = dev->destroy_task; > > + > > this_cpu_dec(*dev->pcpu_refcnt); > > + if (destroy_task) > > + wake_up_process(destroy_task); > > } > > I just realized that this introduces a race, if dev_put drops the last > reference, an already running netdev_wait_allrefs runs to completion > and then dev_put tries to wake it up. > Any suggestions on how to avoid this without resorting to > locking? > Honestly I would not touch dev_put() at all. Simply change the msleep(250) to something better, with maybe exponential backoff.