From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 4C2541BAAA for ; Thu, 26 Oct 2017 12:42:32 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Oct 2017 03:42:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,434,1503385200"; d="scan'208";a="1235550916" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.221.32]) by fmsmga002.fm.intel.com with SMTP; 26 Oct 2017 03:42:27 -0700 Received: by (sSMTP sendmail emulation); Thu, 26 Oct 2017 11:42:26 +0100 Date: Thu, 26 Oct 2017 11:42:26 +0100 From: Bruce Richardson To: Ferruh Yigit Cc: Olivier Matz , dev@dpdk.org, cristian.dumitrescu@intel.com Message-ID: <20171026104226.GA11456@bricha3-MOBL3.ger.corp.intel.com> References: <20170911151333.5727-1-olivier.matz@6wind.com> <20170911151333.5727-9-olivier.matz@6wind.com> <228abb94-4939-8425-9451-2fb57fd1c567@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <228abb94-4939-8425-9451-2fb57fd1c567@intel.com> Organization: Intel Research and Development Ireland Ltd. User-Agent: Mutt/1.9.1 (2017-09-22) Subject: Re: [dpdk-dev] [PATCH 08/10] lpm6: fix compilation with -Og X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Oct 2017 10:42:33 -0000 On Fri, Oct 06, 2017 at 01:18:00AM +0100, Ferruh Yigit wrote: > On 9/11/2017 4:13 PM, Olivier Matz wrote: > > The compilation with gcc-6.3.0 and EXTRA_CFLAGS=-Og gives the following > > error: > > > > CC rte_lpm6.o > > rte_lpm6.c: In function ‘rte_lpm6_add_v1705’: > > rte_lpm6.c:442:11: error: ‘tbl_next’ may be used uninitialized in > > this function [-Werror=maybe-uninitialized] > > if (!tbl[tbl_index].valid) { > > ^ > > rte_lpm6.c:521:29: note: ‘tbl_next’ was declared here > > struct rte_lpm6_tbl_entry *tbl_next; > > ^~~~~~~~ > > > > This is a false positive from gcc. Fix it by initializing tbl_next > > to NULL. > > This is hard to trace, and it seems there is a way to have it, not sure > practically possible: > > rte_lpm6_add_v1705 > add_step > if (depth <= bits_covered) { > ... > return 0 <--- so tbl_next stays untouched. > tbl = tbl_next > add_step > tbl[tbl_index] > > > So same comment as previous, if there is a practically available path, > this patch makes it harder to find by hiding compiler warning, so adding > maintainer for decision. > > +Cristian, who has more knowledge of this library than I. I don't think there is an issue here, since there is an additional check before the second and subsequent calls to add_step(). The condition check on the loop in add_v1705 is: "i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1;" The "return 0" sets status to 0, causing the loop to break, preventing any more calls to "tbl = tbl_next". Therefore I don't think this masks an issue, and the fix is ok. In the absense of any other objections or comments on this from Cristian: Acked-by: Bruce Richardson