From patchwork Fri Sep 30 16:13:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101725 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp377170qgf; Fri, 30 Sep 2016 09:14:37 -0700 (PDT) X-Received: by 10.66.149.166 with SMTP id ub6mr12952395pab.137.1475252077349; Fri, 30 Sep 2016 09:14:37 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id xt5si20655743pab.68.2016.09.30.09.14.37; Fri, 30 Sep 2016 09:14:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933777AbcI3QOf (ORCPT + 4 others); Fri, 30 Sep 2016 12:14:35 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:53968 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933037AbcI3QOc (ORCPT ); Fri, 30 Sep 2016 12:14:32 -0400 Received: from wuerfel.lan. ([78.43.20.153]) by mrelayeu.kundenserver.de (mreue004) with ESMTPA (Nemesis) id 0MSFaB-1bNDy32faV-00TVPS; Fri, 30 Sep 2016 18:14:20 +0200 From: Arnd Bergmann To: "David S. Miller" Cc: Arnd Bergmann , Roopa Prabhu , Nicolas Dichtel , Nikolay Aleksandrov , Jiri Pirko , Eric Dumazet , Brenden Blanco , Hannes Frederic Sowa , Nogah Frankel , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] net: rtnl: avoid uninitialized data in IFLA_VF_VLAN_LIST handling Date: Fri, 30 Sep 2016 18:13:49 +0200 Message-Id: <20160930161416.18660-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:WdiGT03ogDyaYHHytJdc2LIJ5pypBMmTnQ146ZQ5ki2G3vs+qoL 7aRF250Z90FXs+rJk03jT8T2sbvsHtYDBxva/6y0Oml0F/rXKsPwbjpN5tZ7Ox2wb7ok0qc 9+n6V/2yGTtWZBeO3yrrdrp4JiM/lo3Mxs31s6s3VXtw3zlBCc9RJiW6ECdUWLR9+qJ27kb gw3X+cgAmqvzXqNwPH4dg== X-UI-Out-Filterresults: notjunk:1; V01:K0:PX3T50pQLDA=:bVobQFMEp+15LcQHV1mYSH mPmiFbbFE11LVuYPKxcP/b1NxWQQ/jkiaaDC+7CHxoMRKEQzp1iCsBk5VAjOY2t9KVmOfMyC7 E8h8yPDBg+MpLOFY9GZtq1Sax205Lr0os4gg3zvmakjC3VIJMpMV6Mas5Srl4JuStNDQsH3E4 kc4OMW0aiPrd8HT9/j4ckitsUBhAsEaDVM0t++dDiTtKjgRsYa7thsOzQz37G/5GWlVlZYUGy 8wqjriBfF2+hTXZuPdu6sNaZs19DyLUPENNdQQPqOXKHHklMk495aMiad/aFDCEUa4NvKVpEi NGuN6sldaav5h0rDsDKzVDMngEqu9RlWCEgDo5dOENHjCFuEa7APYo9wKhB4PxbCW3rBkuBzt Wc9fh5JFInyvCRjkia73TugoKXq0sYzLcPFsPFZYzBjn/E1Cyjjo7Pm9CZkEGjCAhQFrBmjMp 6QKFTTRrchbmARUonX62d0b3KQd5gsiQNGEjDzy7QjoaLXIFqDZGN/nz8OZUsja90HWqb9Dlg PmsMOsyALfcNPSZvioKn2HUqtTxYoKZGirrDzrX9abCyKovGgOesQNwTFTrKv/Z9GzqmdCWsQ Kgw+TVdL3fNFWcNMJBQ9cMJujUCbHhaVgufm8IiYKmu3VMUBL8fA5G5JD8IIH+hwO0iVP56AB LYU5+q26cbDvttZcMGTBghyh819oMSfaE23DkcI95kxdO2o5n5xUQLSBGKvB6iZsqy8M= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org With the newly added support for IFLA_VF_VLAN_LIST netlink messages, we get a warning about potential uninitialized variable use in the parsing of the user input when enabling the -Wmaybe-uninitialized warning: net/core/rtnetlink.c: In function 'do_setvfinfo': net/core/rtnetlink.c:1756:9: error: 'ivvl$' may be used uninitialized in this function [-Werror=maybe-uninitialized] I have not been able to prove whether it is possible to arrive in this code with an empty IFLA_VF_VLAN_LIST block, but if we do, then ndo_set_vf_vlan gets called with uninitialized arguments. This adds an explicit check for an empty list, making it obvious to the reader and the compiler that this cannot happen. Fixes: 79aab093a0b5 ("net: Update API for VF vlan protocol 802.1ad support") Signed-off-by: Arnd Bergmann --- net/core/rtnetlink.c | 3 +++ 1 file changed, 3 insertions(+) -- 2.9.0 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 3ac8946bf244..b06d2f46b83e 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1753,6 +1753,9 @@ 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)