From patchwork Fri Mar 30 16:28:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 893423 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=cumulusnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b="AKwhWLu8"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40CRrt2WHvz9s1r for ; Sat, 31 Mar 2018 03:29:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751373AbeC3Q3A (ORCPT ); Fri, 30 Mar 2018 12:29:00 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:38976 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751322AbeC3Q27 (ORCPT ); Fri, 30 Mar 2018 12:28:59 -0400 Received: by mail-pf0-f194.google.com with SMTP id c78so5679732pfj.6 for ; Fri, 30 Mar 2018 09:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id; bh=ZRGplvi2TICr157Sir6EGakEBMC6MRd0zyaTm0KHqYQ=; b=AKwhWLu8vgID5lrNXulcZg6Au7kJcdAZZdrvdPzgu8bN2ydnSsj7JfUrLumgno0vZh Io5KTyrV2mOHsK+Sm673MkrYJ/e1EDr0eo0Ky1lK/OzBI4ytcbjXuJsoPpuqsyaLnGYk 1NBVVe4Lyxth5EPYpe8cUVIMkJUCSXcexSdyM= 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; bh=ZRGplvi2TICr157Sir6EGakEBMC6MRd0zyaTm0KHqYQ=; b=TzNTl9vCdQhefeEDrs9MNeC9BXhpaHekL3Mx8M0PdWKAFysRq99dFpDRD5SxEgijtY GFUHjTPzKKOJ8J95v6ICc908LpnZbV2AT0lPD+QiKgssJGCIMjX8W1Db+4BSGHtqRkn+ lIYXgowJRgHpMjk8P5a6HktPK42CChqrirH3i69wY5ggysAvYUigbF34p7tf7SBf1yDY dAiWv1Lgeu6NUGBCxw+WvKDH31ohXkAdkJo5ZJPFMLfJQdJJzy2FHwTkm4qIfLhlBZzw 2XsnxDvhceDdinS+t6hfMFx0KFz/sYe/Nz7bC+aphRPoxleiUVYJQTY+OlADygn7/GNG Yzgw== X-Gm-Message-State: AElRT7F9oSkHwl2xrWenIZuKdzoGFBViGT5i3fa/SiR4ClanPNaKU/DB AiArRTNUIxBK4RDkgvTlf/BRzgJJ X-Google-Smtp-Source: AIpwx49Ydb2v9OmYUtfr99jHyXjpLgPldlxmeMvuFHNnwgWnaP9PNUns1T/JV3JbycIxQjZquuiL5Q== X-Received: by 10.101.72.13 with SMTP id h13mr6988043pgs.420.1522427338411; Fri, 30 Mar 2018 09:28:58 -0700 (PDT) Received: from kenny.it.cumulusnetworks.com. (fw.cumulusnetworks.com. [216.129.126.126]) by smtp.googlemail.com with ESMTPSA id b8sm15141188pgv.17.2018.03.30.09.28.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Mar 2018 09:28:57 -0700 (PDT) From: David Ahern To: netdev@vger.kernel.org, jakub.kicinski@netronome.com Cc: David Ahern Subject: [PATCH net-next] netdevsim: Change nsim_devlink_setup to return error to caller Date: Fri, 30 Mar 2018 09:28:51 -0700 Message-Id: <20180330162851.3709-1-dsa@cumulusnetworks.com> X-Mailer: git-send-email 2.11.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Change nsim_devlink_setup to return any error back to the caller and update nsim_init to handle it. Requested-by: Jakub Kicinski Signed-off-by: David Ahern Acked-by: Jakub Kicinski --- drivers/net/netdevsim/devlink.c | 12 +++++++----- drivers/net/netdevsim/netdev.c | 6 +++++- drivers/net/netdevsim/netdevsim.h | 5 +++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/net/netdevsim/devlink.c b/drivers/net/netdevsim/devlink.c index bbdcf064ba10..27ae05c5fdaf 100644 --- a/drivers/net/netdevsim/devlink.c +++ b/drivers/net/netdevsim/devlink.c @@ -218,22 +218,22 @@ void nsim_devlink_teardown(struct netdevsim *ns) } } -void nsim_devlink_setup(struct netdevsim *ns) +int nsim_devlink_setup(struct netdevsim *ns) { struct net *net = nsim_to_net(ns); bool *reg_devlink = net_generic(net, nsim_devlink_id); struct devlink *devlink; - int err = -ENOMEM; + int err; /* only one device per namespace controls devlink */ if (!*reg_devlink) { ns->devlink = NULL; - return; + return 0; } devlink = devlink_alloc(&nsim_devlink_ops, 0); if (!devlink) - return; + return -ENOMEM; err = devlink_register(devlink, &ns->dev); if (err) @@ -247,12 +247,14 @@ void nsim_devlink_setup(struct netdevsim *ns) *reg_devlink = false; - return; + return 0; err_dl_unregister: devlink_unregister(devlink); err_devlink_free: devlink_free(devlink); + + return err; } /* Initialize per network namespace state */ diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 8b30ab3ea2c2..ec68f38213d9 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -167,10 +167,14 @@ static int nsim_init(struct net_device *dev) SET_NETDEV_DEV(dev, &ns->dev); - nsim_devlink_setup(ns); + err = nsim_devlink_setup(ns); + if (err) + goto err_unreg_dev; return 0; +err_unreg_dev: + device_unregister(&ns->dev); err_bpf_uninit: nsim_bpf_uninit(ns); err_debugfs_destroy: diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h index afb8cf90c0fd..3a8581af3b85 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -117,7 +117,7 @@ enum nsim_resource_id { NSIM_RESOURCE_IPV6_FIB_RULES, }; -void nsim_devlink_setup(struct netdevsim *ns); +int nsim_devlink_setup(struct netdevsim *ns); void nsim_devlink_teardown(struct netdevsim *ns); int nsim_devlink_init(void); @@ -128,8 +128,9 @@ void nsim_fib_exit(void); u64 nsim_fib_get_val(struct net *net, enum nsim_resource_id res_id, bool max); int nsim_fib_set_max(struct net *net, enum nsim_resource_id res_id, u64 val); #else -static inline void nsim_devlink_setup(struct netdevsim *ns) +static inline int nsim_devlink_setup(struct netdevsim *ns) { + return 0; } static inline void nsim_devlink_teardown(struct netdevsim *ns)