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=-9.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT 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 81A56C43381 for ; Thu, 21 Feb 2019 17:54:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 502642083B for ; Thu, 21 Feb 2019 17:54:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b="JlXdyyBi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727269AbfBURyl (ORCPT ); Thu, 21 Feb 2019 12:54:41 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:43370 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725866AbfBURyk (ORCPT ); Thu, 21 Feb 2019 12:54:40 -0500 Received: by mail-pg1-f196.google.com with SMTP id l11so2586329pgq.10 for ; Thu, 21 Feb 2019 09:54:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=sPiy9yJjIKSQckicjws90jhUbj03mjFFNE1UvkCgYKU=; b=JlXdyyBituzHeR6RuVzY3upa1ZI0pda+OQVQabfeRyjLTEpwiayljAYtW4mYt5H5ei uB9igAbFwy2zrtYWKYRK1YPPvYU4pszW2kBQtU6mwTdxzAtQALUHKPlL3vA2mQ/z/O34 y8CwaNK+2UBonT2dvXVdhSBk/rMCyCZGh8lDjGzDRtdOu4k6LxBrpd9AoGZjqIb/aXB8 6E2qQF/ydSC7Na4czFy03jAYnunVFYh8zl1lJee7F7mV/j8kiXKZEQGEehr+R1iNoZiX 57DNn6ltscE2DkuuCVHcQu3XFC9EJuH3iwLpFf7FjVTQjmTbRhtBfwKYcC6lec0Ckl6K Tsrg== 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=sPiy9yJjIKSQckicjws90jhUbj03mjFFNE1UvkCgYKU=; b=j8Rf6iqvDjHrAwvWpYRgi3NvtSM+A5OrRcautE4D7Zd7yRfymKhtgtClnKQTjHO6Jb t/RyNgPsFgaXAKZ3+TnKteUxew7YoSjep9sBMSHy+Q3luFEHyiOKbRehjxKCnKb6Lzfw rCpQyQ0q0KoNUSp/1+CgtGVzk1LbDl88WHGxNN4miQ2grR2vJMPyLZ3f8CGI7men68Po XMdm6V3agAR+4LRfvztV0aznc/QkuLB3dX9zXDsi1A5yLeM5ba/CK9SWmvpaeAtgkYj4 9T6au6MV1gN31HXE8rsywFOQ3eLw+5nCmtiU15pc+1eaDcvZrvwTGceO5+NynTJQ4Pbl dbfw== X-Gm-Message-State: AHQUAuakEUemWjq0go7jf2s7xYDQUIUGMpvWENh1LplbIYP0fSaDalmk 76E5fpF/zHiw4Z4b2xWgOV1UJxXnPSI= X-Google-Smtp-Source: AHgI3IbNlHFENhxgnNtMiDq02QjYTjzn3IeodulcAp7kZyT+/n2XvnoEHFWfRP6enaK9p82X3RO/rg== X-Received: by 2002:a63:ec48:: with SMTP id r8mr39785611pgj.50.1550771679663; Thu, 21 Feb 2019 09:54:39 -0800 (PST) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id y6sm36686087pfd.104.2019.02.21.09.54.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 Feb 2019 09:54:38 -0800 (PST) From: Stephen Hemminger X-Google-Original-From: Stephen Hemminger To: Moshe Shemesh Cc: netdev@vger.kernel.org, Stephen Hemminger , Stephen Hemminger Subject: [RFC] rtnetlink: handle multiple vlan tags in set_vf_vlan Date: Thu, 21 Feb 2019 09:54:36 -0800 Message-Id: <20190221175436.10767-1-sthemmin@microsoft.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The netlink API for IFLA_VF_VLAN_LIST allows multiple VLAN tags to be passed (and the message was validated) but only the first VLAN tag was being passed to the device. Change to iterate over each tag received. Fixes: 79aab093a0b5 ("net: Update API for VF vlan protocol 802.1ad support") Signed-off-by: Stephen Hemminger --- net/core/rtnetlink.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index a51cab95ba64..3a9ec988ae21 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -2207,11 +2207,10 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb) if (tb[IFLA_VF_VLAN_LIST]) { struct ifla_vf_vlan_info *ivvl[MAX_VLAN_LIST_LEN]; struct nlattr *attr; - int rem, len = 0; + int i, rem, len = 0; - err = -EOPNOTSUPP; if (!ops->ndo_set_vf_vlan) - return err; + return -EOPNOTSUPP; nla_for_each_nested(attr, tb[IFLA_VF_VLAN_LIST], rem) { if (nla_type(attr) != IFLA_VF_VLAN_INFO || @@ -2224,13 +2223,15 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb) len++; } - if (len == 0) - return -EINVAL; - err = ops->ndo_set_vf_vlan(dev, ivvl[0]->vf, ivvl[0]->vlan, - ivvl[0]->qos, ivvl[0]->vlan_proto); - if (err < 0) - return err; + err = -EINVAL; /* empty list error */ + for (i = 0; i < len; i++) { + err = ops->ndo_set_vf_vlan(dev, ivvl[i]->vf, + ivvl[i]->vlan, ivvl[i]->qos, + ivvl[i]->vlan_proto); + if (err < 0) + return err; + } } if (tb[IFLA_VF_TX_RATE]) { -- 2.17.1