From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 062C3C43381 for ; Fri, 22 Mar 2019 13:55:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C959E218A5 for ; Fri, 22 Mar 2019 13:55:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="flP6ywLo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727801AbfCVNzj (ORCPT ); Fri, 22 Mar 2019 09:55:39 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:38568 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727599AbfCVNze (ORCPT ); Fri, 22 Mar 2019 09:55:34 -0400 Received: by mail-wr1-f67.google.com with SMTP id g12so2455901wrm.5 for ; Fri, 22 Mar 2019 06:55:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=A8r+khgNANQB/L5pybQbjP0Kn00TiI5WenrVCusvJCM=; b=flP6ywLo4ecEN5LuGVvdjefYJYmfg3wR/ANPkg9G8xG/r+7bolgr6dvxlbSPXArolK Y+7jXNLBYP0f2xbwc5ou1kf3SrOhMA6uEjoJVtv4aN34zYtlc7B138f14o+T3VUd7fQ3 djGhq9rGml7YnlBnrPmALKZQV4UzHWLdDtoK9YHh4H4zM6FZVZFmnZpLsSaKlIyBcU/Z nxtc77F7VyZypIhXYe5SaItHATCnz/Ydng+lWYa1FbbkUPDjmtcCNF6JxBvdYqxsTSjL CS7ye/OvPQ8HJs0woZXCfOQcXwCgFKgZ+usl+Nqs5a4+HjtEUFqFN0Ow7Yn9zNw4rCQ3 V8iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=A8r+khgNANQB/L5pybQbjP0Kn00TiI5WenrVCusvJCM=; b=SZzcwUi7aI8OujTGGJ3p2S3WVUFNyvfntuzL8fMZ7pqwrA6UyhNBQNsmL0bSpdbVTE cuh61s1rXFBuFHNFgwPZYOC8ESukeMiCJ6L8GmhS91GBEJ6Szc4U7EMJ+EgWym+2Ovez rHhYgp2hjjcrv0sRETvsUXHq6EOY59oVvr6CFlpM82nrT0tgs06CgG7mdHtCh45GKYb0 9kdlsWEz7VB3hMF5X7qd6dQm8Wiat0vA/rbxCkBKJ8Yhh9WEyVwmE42978dyIWaAdRLy l9muBzsnnsgbpMDuWjm76VMHsz0/+sHvvwmIORIP40/2y0Rk4huzHxjuz4FemcC2gN5K nFyw== X-Gm-Message-State: APjAAAWZhq5EQmvX5YNZCe2jEz0H3m1dem2c9UOz9pNs2lYyox1vPyDd FzIREEoJPSEzDyzRMr7PrAhrcQ== X-Google-Smtp-Source: APXvYqyLLACPWYi2UHEG9BHfiqgfavmCZqxUenIUvEwrLoFd99jr7DA4PNDBug2BD0cRRXWMH/zB/w== X-Received: by 2002:a5d:564d:: with SMTP id j13mr6455745wrw.155.1553262932661; Fri, 22 Mar 2019 06:55:32 -0700 (PDT) Received: from localhost ([195.39.71.253]) by smtp.gmail.com with ESMTPSA id k15sm4380855wmj.8.2019.03.22.06.55.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 22 Mar 2019 06:55:32 -0700 (PDT) Date: Fri, 22 Mar 2019 14:44:52 +0100 From: Jiri Pirko To: Jakub Kicinski Cc: netdev@vger.kernel.org, davem@davemloft.net, mlxsw@mellanox.com, idosch@mellanox.com, f.fainelli@gmail.com, andrew@lunn.ch, vivien.didelot@gmail.com Subject: Re: [patch net-next 06/11] net: devlink: don't take devlink_mutex for devlink_compat_* Message-ID: <20190322134452.GD2211@nanopsycho> References: <20190321132019.1426-1-jiri@resnulli.us> <20190321132019.1426-7-jiri@resnulli.us> <20190321120824.5fcbbbb4@cakuba.netronome.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190321120824.5fcbbbb4@cakuba.netronome.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Thu, Mar 21, 2019 at 08:08:24PM CET, jakub.kicinski@netronome.com wrote: >On Thu, 21 Mar 2019 14:20:14 +0100, Jiri Pirko wrote: >> From: Jiri Pirko >> >> The netdevice is guaranteed to not disappear so we can rely that >> devlink_port and devlink won't disappear as well. No need to take >> devlink_mutex so don't take it here. > >I'm not sure the port can't disappear, just looking at this series it >seems bnxt registers the port after netdev (maybe it unregisters in >the other order). Not that it matters here, we use the main devlink >instance for the compat helpers, and devlink instance should >definitely exist. You are right. Btw, the devlink_port-netdev registration order should be fixed as well. Niting it down to my todo. > >So FWIW the entire series looks good to me. > >I've also pushed my port patches out: > >https://git.kernel.org/pub/scm/linux/kernel/git/kuba/linux.git/log/?h=devlink-pci-ports > >if that's of any use to you (e.g. the patch which changes the order of >port vs netdev registration). Thanks. > >> Signed-off-by: Jiri Pirko > >> diff --git a/net/core/devlink.c b/net/core/devlink.c >> index 3dc51ddf7451..1e125c3b890c 100644 >> --- a/net/core/devlink.c >> +++ b/net/core/devlink.c >> @@ -6444,17 +6444,15 @@ void devlink_compat_running_version(struct net_device *dev, >> dev_hold(dev); >> rtnl_unlock(); >> >> - mutex_lock(&devlink_mutex); >> devlink = netdev_to_devlink(dev); >> if (!devlink || !devlink->ops->info_get) >> - goto unlock_list; >> + goto out; >> >> mutex_lock(&devlink->lock); >> __devlink_compat_running_version(devlink, buf, len); >> mutex_unlock(&devlink->lock); >> -unlock_list: >> - mutex_unlock(&devlink_mutex); >> >> +out: >> rtnl_lock(); >> dev_put(dev); >> } >> @@ -6462,22 +6460,22 @@ void devlink_compat_running_version(struct net_device *dev, >> int devlink_compat_flash_update(struct net_device *dev, const char *file_name) >> { >> struct devlink *devlink; >> - int ret = -EOPNOTSUPP; >> + int ret; >> >> dev_hold(dev); >> rtnl_unlock(); >> >> - mutex_lock(&devlink_mutex); >> devlink = netdev_to_devlink(dev); >> - if (!devlink || !devlink->ops->flash_update) >> - goto unlock_list; >> + if (!devlink || !devlink->ops->flash_update) { >> + ret = -EOPNOTSUPP; >> + goto out; >> + } >> >> mutex_lock(&devlink->lock); >> ret = devlink->ops->flash_update(devlink, file_name, NULL, NULL); >> mutex_unlock(&devlink->lock); >> -unlock_list: >> - mutex_unlock(&devlink_mutex); >> >> +out: >> rtnl_lock(); >> dev_put(dev); >> >