net/bnxt: validate RSS hash key length
authorVenkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Wed, 2 Oct 2019 23:25:55 +0000 (16:25 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 8 Oct 2019 10:14:31 +0000 (12:14 +0200)
In bnxt_rss_hash_update_op, driver is proceeding with
bnxt_hwrm_vnic_rss_cfg even though RSS hashkey length is invalid.

This patch fixes the problem by returning -EINVAL when RSS hashkey
length is invalid.

Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Rahul Gupta <rahul.gupta@broadcom.com>
Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rastapur@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index 2c9eaaa..354fa4c 100644 (file)
@@ -1373,14 +1373,20 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
        vnic->hash_type = bnxt_rte_to_hwrm_hash_types(rss_conf->rss_hf);
 
        /*
-        * Use the supplied key if the key length is
-        * acceptable and the rss_key is not NULL
+        * If hashkey is not specified, use the previously configured
+        * hashkey
         */
-       if (rss_conf->rss_key && rss_conf->rss_key_len <= HW_HASH_KEY_SIZE)
-               memcpy(vnic->rss_hash_key,
-                      rss_conf->rss_key,
-                      rss_conf->rss_key_len);
+       if (!rss_conf->rss_key)
+               goto rss_config;
 
+       if (rss_conf->rss_key_len != HW_HASH_KEY_SIZE) {
+               PMD_DRV_LOG(ERR,
+                           "Invalid hashkey length, should be 16 bytes\n");
+               return -EINVAL;
+       }
+       memcpy(vnic->rss_hash_key, rss_conf->rss_key, rss_conf->rss_key_len);
+
+rss_config:
        bnxt_hwrm_vnic_rss_cfg(bp, vnic);
        return 0;
 }