From patchwork Fri Oct 21 15:55:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101644 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp1371688qge; Fri, 21 Oct 2016 08:57:28 -0700 (PDT) X-Received: by 10.98.18.220 with SMTP id 89mr2903239pfs.71.1477065448408; Fri, 21 Oct 2016 08:57:28 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h191si3215572pgc.323.2016.10.21.08.57.28; Fri, 21 Oct 2016 08:57:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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 linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935334AbcJUP5Z (ORCPT + 27 others); Fri, 21 Oct 2016 11:57:25 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:62687 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753173AbcJUP5W (ORCPT ); Fri, 21 Oct 2016 11:57:22 -0400 Received: from wuerfel.lan. ([78.43.20.153]) by mrelayeu.kundenserver.de (mreue004) with ESMTPA (Nemesis) id 0M1TKv-1cmgX12vrV-00tVs0; Fri, 21 Oct 2016 17:56:30 +0200 From: Arnd Bergmann To: "David S. Miller" Cc: Arnd Bergmann , Alexander Duyck , Tom Herbert , Jiri Pirko , Hadar Hen Zion , Gao Feng , Eric Garver , Amir Vadai , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] flow_dissector: avoid uninitialized variable access Date: Fri, 21 Oct 2016 17:55:53 +0200 Message-Id: <20161021155626.4020344-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:d8oss+QSWQuKhbKKmICzkEBx+xCRMyasTaVS/Q7wyCY/1sJyEoK y7WK/yYl0j9NeqLFfxif45pnmLeo1DPl1fXsYBjN1cnKJ4xSp2ofiHw+fYrAyWTiWsWp8mR VPqBCvX2VmCFk6cm2zB8zYzXeCczDsD8uwOexkx4Xpli5NeFpZU43uY3SsbqYx2Y9RdV/46 r3NfoZ2xqWt+a8pds1cQg== X-UI-Out-Filterresults: notjunk:1; V01:K0:cI1c7sZp2sc=:2BIfuv7ECwfn+v3ShsApvX vQ5eDVyFn5Hdx2v0WVq3p6gAN5XCrXfrZX/PHj/0fSj9gLOwGzunzeyUfq8nASyfvMXx527Yn lJdBUcep3XNSz+8yMRS0NdX+33Y6WDFmrkclMzzCZbvPua6jZBr1bb4QOch4wcTJnS7n9smvN SS9TKIsqtjQYXhyZVtAA53+j+u2IdPGKyCp//Yl2cw5j2HbCNdnOcODSEyonzBuZGrpIdeGoK PpfVmfD0BBsnXeETewZvjAwaUDiT/cfrSvwoY6XQvHCZWxFjNSGJFXcM0Mlq9R2nGzwNi4FQk 8I0j0o2wvmphi0P6Ph02PWIllIhVC8MKlDKgQb9wzseA4NSgeYAxvE3XmHYkfJ5sOybVD/fqL xKLes5Hxp1L+nchqcdZGjPna1u7SJyfTFkrOFp18TTWc7SaaiP3Cx1UtgGOwjhVhjoaXiWLBI fKdsHgzSBFcopn/U/oekFjMNAf98o/8qGlFZI0rkBy4kSzj2enBOkfanLMg1dVu4QVYHpwvVB zPP410nD7O0czPtx3b8L5COonXsjIy2HX2QrW9aKyrs0bTfDT06wmU7DOF9ZGziAiPhoaCBQV VX7ZKb5e1GPb08izOzgaqqWyRfmFyBdOsJ7q/u9g2ntC2LTjif/0Fnr+7deI/onrb7VXCk/LE P/X0L6G52b2FjxcRKMSOeuuve/mToMzX7lwEcpz0U6Sr7uJJP+umNMAKx6gANluSjBBs= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org gcc warns about an uninitialized pointer dereference in the vlan priority handling: net/core/flow_dissector.c: In function '__skb_flow_dissect': net/core/flow_dissector.c:281:61: error: 'vlan' may be used uninitialized in this function [-Werror=maybe-uninitialized] >From all I can tell, this warning is about a real bug, and we should not attempt look up the vlan header if there was no vlan tag. Fixes: f6a66927692e ("flow_dissector: Get vlan priority in addition to vlan id") Signed-off-by: Arnd Bergmann --- I'm not sure about this one, please have a closer look at what the original code does before applying. --- net/core/flow_dissector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.9.0 diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 44e6ba9d3a6b..dd6003bf27e1 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -245,7 +245,7 @@ bool __skb_flow_dissect(const struct sk_buff *skb, } case htons(ETH_P_8021AD): case htons(ETH_P_8021Q): { - const struct vlan_hdr *vlan; + const struct vlan_hdr *vlan = NULL; if (skb && skb_vlan_tag_present(skb)) proto = skb->protocol; @@ -264,7 +264,7 @@ bool __skb_flow_dissect(const struct sk_buff *skb, } skip_vlan = true; - if (dissector_uses_key(flow_dissector, + if (vlan && dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_VLAN)) { key_vlan = skb_flow_dissector_target(flow_dissector, FLOW_DISSECTOR_KEY_VLAN,