From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <nhorman@tuxdriver.com>
Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])
 by dpdk.org (Postfix) with ESMTP id EC9B73F9
 for <dev@dpdk.org>; Tue, 16 Dec 2014 22:43:52 +0100 (CET)
Received: from hmsreliant.think-freely.org
 ([2001:470:8:a08:7aac:c0ff:fec2:933b] helo=localhost)
 by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63)
 (envelope-from <nhorman@tuxdriver.com>)
 id 1Y0zuH-0003H7-My; Tue, 16 Dec 2014 16:43:51 -0500
Date: Tue, 16 Dec 2014 16:43:43 -0500
From: Neil Horman <nhorman@tuxdriver.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Message-ID: <20141216214343.GG13806@hmsreliant.think-freely.org>
References: <20141216140926.GD13806@hmsreliant.think-freely.org>
 <1418740784-12155-1-git-send-email-bruce.richardson@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <1418740784-12155-1-git-send-email-bruce.richardson@intel.com>
User-Agent: Mutt/1.5.23 (2014-03-12)
X-Spam-Score: -2.9 (--)
X-Spam-Status: No
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2] testpmd: limit port mask bits to
 RTE_MAX_ETHPORTS
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Dec 2014 21:43:53 -0000

On Tue, Dec 16, 2014 at 02:39:44PM +0000, Bruce Richardson wrote:
> The port mask parsing in testpmd allowed up to 64 bits to be processed,
> even if RTE_MAX_ETHPORTS is set to a max of 32. Fix this by only
> processing up to min(RTE_MAX_ETHPORTS,64) bits of the mask.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> V2: changed to use RTE_MIN in comparison, instead of double "<".
> ---
>  app/test-pmd/config.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index 69a83c2..97b6525 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -1440,7 +1440,7 @@ set_fwd_ports_mask(uint64_t portmask)
>  		return;
>  	}
>  	nb_pt = 0;
> -	for (i = 0; i < 64; i++) {
> +	for (i = 0; i < (unsigned)RTE_MIN(64, RTE_MAX_ETHPORTS); i++) {
>  		if (! ((uint64_t)(1ULL << i) & portmask))
>  			continue;
>  		portlist[nb_pt++] = i;
> -- 
> 1.9.3
> 
> 

I was thinking of assigning a new temp variable to the return of RTE_MIN so as
to avoid the comparison within the for loop, but since both arguments are
constant, I'm sure the compiler will avoid multiple comparisons.

Acked-by: Neil Horman <nhorman@tuxdriver.com>