From patchwork Wed Jul 4 06:29:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 939118 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=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DlOnrqae"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41LB1W6S4Qz9s5K for ; Wed, 4 Jul 2018 16:30:07 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933759AbeGDGaF (ORCPT ); Wed, 4 Jul 2018 02:30:05 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34813 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933239AbeGDGaD (ORCPT ); Wed, 4 Jul 2018 02:30:03 -0400 Received: by mail-pg0-f67.google.com with SMTP id y5-v6so2056914pgv.1 for ; Tue, 03 Jul 2018 23:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=9JLJv7LfvudAv74O73jWizvQfNcgPM3Vw0IbwrQALNQ=; b=DlOnrqae9lnePJMV526heTCfCdNYNC0QTumN6r6vU9jNzbMMLjFWwOMYyWOf2azAm3 thtm3iFTcLQUqbOqbqJmbHMMrTGY0GYuVEkKMgRkj1ru35E6hhvxB+tRknLhQejEzZ4l mNrl2bNuy40zT02vwMrHz1QDpCMmrieKHlgMVMiqZ7H50FZENNo1Y5+xhSDeE3p6zXeR vBNjTdtaCeF8Y4lVPNFixbUgVfymtpUHNI1NLzpSxB+iTVRVxHLdRNWE0eKAkz56flrG YX5YhxM3VuKFuTJ+UHm8DyHfuQd9nf6iCV+1smsGLyBOsC1h3IC7+Y9HrgKLGVsUTqwB Tvhg== 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=9JLJv7LfvudAv74O73jWizvQfNcgPM3Vw0IbwrQALNQ=; b=B06Sp1Aq1nUeJkXalBeBTS4hZmvw24dlQs80SdsFtFNTfgpyru3Flm4jTf3x82utfJ emuUDPWGIxp8uOft/3bMY5tPx/zOi2ZJBQGmuIZg7sZacvf9FJz7gO1A4LaqVpvVXCx4 p9ViyPfphKrbE/mL3XQdb13KFoj+QNRoXyAV1h56UGOm1wF/c4EjpRH8c2j8X5QsnyCC mtfXHiXkodsBujTnjFjKe02A6q47X668BvqV79Xnp7J47J8vuTxpTgsBKbegft6WR+hz xCTUL/SizTIShX5wpZjwi0jCdCbIRzCIN1V4T646xbYqiFXdThZ82J8CTQfSOwQEWjFC +X0g== X-Gm-Message-State: APt69E2FDmlUt5wneosZsbY5vEgcpb2Hmjv4i0uYkqK0bX+GLCAzLjm+ 4nM1gXT7qXZiDV/xK3NXNBUEYG5l X-Google-Smtp-Source: AAOMgpewyr4pF0u/q63mOhopvScC5lwQA95Jgt1EHj60hswSS5QtuV1W+o69blHUdNQOzIT3NaCQUA== X-Received: by 2002:a62:40dc:: with SMTP id f89-v6mr827674pfd.194.1530685802610; Tue, 03 Jul 2018 23:30:02 -0700 (PDT) Received: from leo.usersys.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id m21-v6sm3794896pgv.27.2018.07.03.23.30.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jul 2018 23:30:02 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: David Miller , Stefano Brivio , Cong Wang , Hangbin Liu Subject: [PATCH net] net: mv __dev_notify_flags from void to int Date: Wed, 4 Jul 2018 14:29:46 +0800 Message-Id: <1530685786-26449-1-git-send-email-liuhangbin@gmail.com> X-Mailer: git-send-email 2.5.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As call_netdevice_notifiers() and call_netdevice_notifiers_info() have return values, we should also return the values in function __dev_notify_flags(). Signed-off-by: Hangbin Liu --- include/linux/netdevice.h | 2 +- net/core/dev.c | 30 ++++++++++++++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3d0cc0b..b1c145e 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -3411,7 +3411,7 @@ int dev_ethtool(struct net *net, struct ifreq *); unsigned int dev_get_flags(const struct net_device *); int __dev_change_flags(struct net_device *, unsigned int flags); int dev_change_flags(struct net_device *, unsigned int); -void __dev_notify_flags(struct net_device *, unsigned int old_flags, +int __dev_notify_flags(struct net_device *, unsigned int old_flags, unsigned int gchanges); int dev_change_name(struct net_device *, const char *); int dev_set_alias(struct net_device *, const char *, size_t); diff --git a/net/core/dev.c b/net/core/dev.c index a5aa1c7..0994533 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6798,8 +6798,10 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify) dev_change_rx_flags(dev, IFF_PROMISC); } + if (notify) - __dev_notify_flags(dev, old_flags, IFF_PROMISC); + return __dev_notify_flags(dev, old_flags, IFF_PROMISC); + return 0; } @@ -6854,8 +6856,8 @@ static int __dev_set_allmulti(struct net_device *dev, int inc, bool notify) dev_change_rx_flags(dev, IFF_ALLMULTI); dev_set_rx_mode(dev); if (notify) - __dev_notify_flags(dev, old_flags, - dev->gflags ^ old_gflags); + return __dev_notify_flags(dev, old_flags, + dev->gflags ^ old_gflags); } return 0; } @@ -7016,21 +7018,26 @@ int __dev_change_flags(struct net_device *dev, unsigned int flags) return ret; } -void __dev_notify_flags(struct net_device *dev, unsigned int old_flags, - unsigned int gchanges) +int __dev_notify_flags(struct net_device *dev, unsigned int old_flags, + unsigned int gchanges) { unsigned int changes = dev->flags ^ old_flags; + int err = 0; if (gchanges) rtmsg_ifinfo(RTM_NEWLINK, dev, gchanges, GFP_ATOMIC); if (changes & IFF_UP) { if (dev->flags & IFF_UP) - call_netdevice_notifiers(NETDEV_UP, dev); + err = call_netdevice_notifiers(NETDEV_UP, dev); else - call_netdevice_notifiers(NETDEV_DOWN, dev); + err = call_netdevice_notifiers(NETDEV_DOWN, dev); } + err = notifier_to_errno(err); + if (err) + goto out; + if (dev->flags & IFF_UP && (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) { struct netdev_notifier_change_info change_info = { @@ -7040,8 +7047,12 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags, .flags_changed = changes, }; - call_netdevice_notifiers_info(NETDEV_CHANGE, &change_info.info); + err = call_netdevice_notifiers_info(NETDEV_CHANGE, &change_info.info); + err = notifier_to_errno(err); } + +out: + return err; } /** @@ -7062,8 +7073,7 @@ int dev_change_flags(struct net_device *dev, unsigned int flags) return ret; changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags); - __dev_notify_flags(dev, old_flags, changes); - return ret; + return __dev_notify_flags(dev, old_flags, changes); } EXPORT_SYMBOL(dev_change_flags);