[dpdk-stable] [PATCH v2 2/5] app/testpmd: fix RSS key length
Li, Xiaoyun
xiaoyun.li at intel.com
Wed Sep 22 13:25:22 CEST 2021
> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin at redhat.com>
> Sent: Wednesday, September 22, 2021 17:58
> To: dev at dpdk.org; Xia, Chenbo <chenbo.xia at intel.com>;
> amorenoz at redhat.com; david.marchand at redhat.com;
> andrew.rybchenko at oktetlabs.ru; Yigit, Ferruh <ferruh.yigit at intel.com>;
> michaelba at nvidia.com; viacheslavo at nvidia.com; Li, Xiaoyun
> <xiaoyun.li at intel.com>
> Cc: stable at dpdk.org; nelio.laranjeiro at 6wind.com; yvugenfi at redhat.com;
> ybendito at redhat.com; Maxime Coquelin <maxime.coquelin at redhat.com>
> Subject: [PATCH v2 2/5] app/testpmd: fix RSS key length
>
> 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 at dpdk.org
>
> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> ---
> 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
Acked-by: Xiaoyun Li <xiaoyun.li at intel.com>
More information about the stable
mailing list