Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp576489pxu; Wed, 7 Oct 2020 10:13:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxheeY1ferO7LVW8MWvOc2JlyYiioOMktrbUVQGe1Ir1Zb24bCYlpunhTThSH3/1guL6V6o X-Received: by 2002:aa7:cb05:: with SMTP id s5mr4607399edt.363.1602090784769; Wed, 07 Oct 2020 10:13:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602090784; cv=none; d=google.com; s=arc-20160816; b=XUAAf/+x3BwhRLWRRPPVPtSeDdGoMmJtYbONsbcJ6g8Ac93fJFFDqsscHHUha21mVa uOJUGdRmZ40kKv+eSucg6u5YDCPkPK6S3zSJbaGZuQ8isTwssSb2ejdD4IYrrGBMdrOd GLEZS+4TEytyWnHjiCo+pbtkwnVuFT5JnIerLK5BPxE7Bimwuhnyq63EMee8yGjwKQuJ K9SwFvPQ4o2O1EcTC6sQ/ncrH5hJ/Zv3j1KKLGemsnTvGC0ILSB91w6yww7yg4fDHB9y JZ4QwF3Fa2Kf1CTENLbRmfltOZUBZHNEJ/ZN/BKwnpQibt0lEwESf2qNu5L9i1TyFOJT aq8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:ironport-sdr:dkim-signature; bh=wrMKBvgXUcLPIISBs6Mvr4aUca2PJ5NSCz27DRmTsyo=; b=yEHJ/Ml6YQBG9pFT6I0YAu1d02/kgfmnPWRIBNoqYGGshjPP3qepk1uetbZ5wuogRl 4KgGZU9K8UH593LLZZv5KjhHGmEfboAg33okBUiG6yCzj1r2ZgDYeTtkbogAouSrlk8G LGoYAtq/x6L48Z8avbGRWY+3+uKHwQEcb1WyVAiBn7ngnZ7bqCX1vS4QTi6Kn2mHyozu JwQQ8UwRnjFhqZKC60VZAnObBNanHuMHP+lynz1t3tsRiL8FldFV8jauZdblJHjD4Ety L95V7qqvkK12B7c1PKdcU5e8O49WqACcL9ypFeF5riS8176N94xX3EvMPf7cwsvOc72W wphw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=kTU7lhXA; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m19si1838151eje.62.2020.10.07.10.12.40; Wed, 07 Oct 2020 10:13:04 -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=fail header.i=@microchip.com header.s=mchp header.b=kTU7lhXA; 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728150AbgJGMJB (ORCPT + 99 others); Wed, 7 Oct 2020 08:09:01 -0400 Received: from esa6.microchip.iphmx.com ([216.71.154.253]:4619 "EHLO esa6.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728138AbgJGMJA (ORCPT ); Wed, 7 Oct 2020 08:09:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1602072540; x=1633608540; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=A71AhQGOkyGRAStPfAC/MBymcrQUUaFkVYzBRt+XfEQ=; b=kTU7lhXA3LOq3XVwjI40xKX70G+yx4xIEdewrNMe8MftvT+i5JPu3Uq1 Hi0v7cw4MqQYSVQgUorfSXh6gCDKjFPXP11hwny7XaSDFh73c9B2NTLnA uFZHhjKltHQs4RmgM4HQtJedLEnEyZCBUmev+34iZQ/WAYYn7RTihhdDf wgUZsrG9m0Hu32N+4i87YSjPBCTqewobzuKI4zIYCi8qmHUyusfX6GK1f p48sz500t8dMy0Kmd14kdRxaDKrX0WGwduIzJAlA+wR7zdN5hooJ+U5tW 9u426z5VF13VBv/eC4C1XClxzS8EyK+l4iRfjPws1sokKX2rsuHeAGkwR w==; IronPort-SDR: MVED8K5dwWFYbf9sRKQTR91Se/3uRplPnp+38da0V067VpLPRobQtbGObD2D6ehn0ClM1GFDcm MrGimQf7ho+22YM7iRE7KCamo0SMyolwhM/E1rCO+oRK+UkK8FokafsbmHwxlUwIaQ9Ah2pY8n pu6Fgs0m5U7ZueNG+sttMQyPPFSosIocCwKZAeFzx9GkKbnE4orOCmeaApyUja5OwGNqspQgw7 /shmV8/l3FQc9diU/pBw46SH7cJdoOgTIua+uClgBeBXybpCv9defpmbqaz3srX7X/VC6EQ3/6 fSc= X-IronPort-AV: E=Sophos;i="5.77,346,1596524400"; d="scan'208";a="29045901" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 07 Oct 2020 05:08:59 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Wed, 7 Oct 2020 05:08:42 -0700 Received: from soft-test08.microsemi.net (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Wed, 7 Oct 2020 05:08:39 -0700 From: Henrik Bjoernlund To: , , , , , , , CC: Henrik Bjoernlund , Horatiu Vultur Subject: [PATCH net] bridge: Netlink interface fix. Date: Wed, 7 Oct 2020 12:07:00 +0000 Message-ID: <20201007120700.2152699-1-henrik.bjoernlund@microchip.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit is correcting NETLINK br_fill_ifinfo() to be able to handle 'filter_mask' with multiple flags asserted. Fixes: 36a8e8e265420 ("bridge: Extend br_fill_ifinfo to return MPR status") Signed-off-by: Henrik Bjoernlund Reviewed-by: Horatiu Vultur Suggested-by: Nikolay Aleksandrov Tested-by: Horatiu Vultur --- net/bridge/br_netlink.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 8a71c60fa357..92d64abffa87 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c @@ -380,6 +380,7 @@ static int br_fill_ifinfo(struct sk_buff *skb, u32 filter_mask, const struct net_device *dev) { u8 operstate = netif_running(dev) ? dev->operstate : IF_OPER_DOWN; + struct nlattr *af = NULL; struct net_bridge *br; struct ifinfomsg *hdr; struct nlmsghdr *nlh; @@ -423,11 +424,18 @@ static int br_fill_ifinfo(struct sk_buff *skb, nla_nest_end(skb, nest); } + if (filter_mask & (RTEXT_FILTER_BRVLAN | + RTEXT_FILTER_BRVLAN_COMPRESSED | + RTEXT_FILTER_MRP)) { + af = nla_nest_start_noflag(skb, IFLA_AF_SPEC); + if (!af) + goto nla_put_failure; + } + /* Check if the VID information is requested */ if ((filter_mask & RTEXT_FILTER_BRVLAN) || (filter_mask & RTEXT_FILTER_BRVLAN_COMPRESSED)) { struct net_bridge_vlan_group *vg; - struct nlattr *af; int err; /* RCU needed because of the VLAN locking rules (rcu || rtnl) */ @@ -441,11 +449,6 @@ static int br_fill_ifinfo(struct sk_buff *skb, rcu_read_unlock(); goto done; } - af = nla_nest_start_noflag(skb, IFLA_AF_SPEC); - if (!af) { - rcu_read_unlock(); - goto nla_put_failure; - } if (filter_mask & RTEXT_FILTER_BRVLAN_COMPRESSED) err = br_fill_ifvlaninfo_compressed(skb, vg); else @@ -456,32 +459,25 @@ static int br_fill_ifinfo(struct sk_buff *skb, rcu_read_unlock(); if (err) goto nla_put_failure; - - nla_nest_end(skb, af); } if (filter_mask & RTEXT_FILTER_MRP) { - struct nlattr *af; int err; if (!br_mrp_enabled(br) || port) goto done; - af = nla_nest_start_noflag(skb, IFLA_AF_SPEC); - if (!af) - goto nla_put_failure; - rcu_read_lock(); err = br_mrp_fill_info(skb, br); rcu_read_unlock(); if (err) goto nla_put_failure; - - nla_nest_end(skb, af); } done: + if (af) + nla_nest_end(skb, af); nlmsg_end(skb, nlh); return 0; -- 2.28.0