From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A2121A0C45; Wed, 22 Sep 2021 11:59:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 91C2E411D5; Wed, 22 Sep 2021 11:59:02 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id B65C8411D4 for ; Wed, 22 Sep 2021 11:59:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1632304740; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0djjjn3VW/khN5wE7sl6PraHJRLclqVArIzHE9wNlO8=; b=F2wirK3YwEo8ZwLIs64x4K2JM8MXGgFHK7fQg+0xdEWKR4dDSawE7RYE7aXAsgThK0rWS/ wkel/0++roHeE1l+EZix8IcziZFlenrR0Ex/i6AWVUlJ+6vp0C5wT9ctHExaCXyLfe9+1I c5SQQJDjbXznkicqaTc+hBlW3SuGYWw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-234-XbBiyS5VMgKTqWvoaQt3DQ-1; Wed, 22 Sep 2021 05:58:59 -0400 X-MC-Unique: XbBiyS5VMgKTqWvoaQt3DQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CF4591922962; Wed, 22 Sep 2021 09:58:57 +0000 (UTC) Received: from max-t490s.redhat.com (unknown [10.39.208.17]) by smtp.corp.redhat.com (Postfix) with ESMTP id 00D2760854; Wed, 22 Sep 2021 09:58:42 +0000 (UTC) From: Maxime Coquelin To: dev@dpdk.org, chenbo.xia@intel.com, amorenoz@redhat.com, david.marchand@redhat.com, andrew.rybchenko@oktetlabs.ru, ferruh.yigit@intel.com, michaelba@nvidia.com, viacheslavo@nvidia.com, xiaoyun.li@intel.com Cc: stable@dpdk.org, nelio.laranjeiro@6wind.com, yvugenfi@redhat.com, ybendito@redhat.com, Maxime Coquelin Date: Wed, 22 Sep 2021 11:57:39 +0200 Message-Id: <20210922095742.229262-3-maxime.coquelin@redhat.com> In-Reply-To: <20210922095742.229262-1-maxime.coquelin@redhat.com> References: <20210922095742.229262-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Subject: [dpdk-dev] [PATCH v2 2/5] app/testpmd: fix RSS key length X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" port_rss_hash_key_update() initializes rss_conf with the RSS key configuration provided by the user, but it calls rte_eth_dev_rss_hash_conf_get() before calling rte_eth_dev_rss_hash_update(), which overrides the parsed RSS config. While the RSS key value is set again after, this is not the case of the key length. It could cause out of bounds access if the key length parsed is smaller than the one read from rte_eth_dev_rss_hash_conf_get(). This patch restores the key length before the rte_eth_dev_rss_hash_update() call to ensure the RSS key value/length pair is consistent. Fixes: 8205e241b2b0 ("app/testpmd: add missing type to RSS hash commands") Cc: stable@dpdk.org Signed-off-by: Maxime Coquelin --- app/test-pmd/config.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 9c66329e96..611965769c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -2854,7 +2854,7 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key, unsigned int i; rss_conf.rss_key = NULL; - rss_conf.rss_key_len = hash_key_len; + rss_conf.rss_key_len = 0; rss_conf.rss_hf = 0; for (i = 0; rss_type_table[i].str; i++) { if (!strcmp(rss_type_table[i].str, rss_type)) @@ -2863,6 +2863,7 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key, diag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf); if (diag == 0) { rss_conf.rss_key = hash_key; + rss_conf.rss_key_len = hash_key_len; diag = rte_eth_dev_rss_hash_update(port_id, &rss_conf); } if (diag == 0) -- 2.31.1