net/dpaa2: add some parameter validations
authorVanshika Shukla <vanshika.shukla@nxp.com>
Mon, 19 Jul 2021 13:59:16 +0000 (19:29 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 23 Jul 2021 18:31:01 +0000 (20:31 +0200)
This patch adds validation of the port id for
rte_pmd_dpaa2_set_custom_hash API to check if the
port is a valid DPAA2 port. Also handles some
edge cases in the rte_pmd_dpaa2_mux_flow_create API.

Signed-off-by: Vanshika Shukla <vanshika.shukla@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/net/dpaa2/base/dpaa2_hw_dpni.c
drivers/net/dpaa2/dpaa2_ethdev.c
drivers/net/dpaa2/dpaa2_ethdev.h
drivers/net/dpaa2/dpaa2_mux.c

index b901b43..641e702 100644 (file)
@@ -41,6 +41,17 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
        void *p_params;
        int ret, tc_index = 0;
 
+       if (!rte_eth_dev_is_valid_port(port_id)) {
+               DPAA2_PMD_WARN("Invalid port id %u", port_id);
+               return -EINVAL;
+       }
+
+       if (strcmp(eth_dev->device->driver->name,
+                       RTE_STR(NET_DPAA2_PMD_DRIVER_NAME))) {
+               DPAA2_PMD_WARN("Not a valid dpaa2 port");
+               return -EINVAL;
+       }
+
        p_params = rte_zmalloc(
                NULL, DIST_PARAM_IOVA_SIZE, RTE_CACHE_LINE_SIZE);
        if (!p_params) {
index d892819..c121695 100644 (file)
@@ -2905,8 +2905,8 @@ static struct rte_dpaa2_driver rte_dpaa2_pmd = {
        .remove = rte_dpaa2_remove,
 };
 
-RTE_PMD_REGISTER_DPAA2(net_dpaa2, rte_dpaa2_pmd);
-RTE_PMD_REGISTER_PARAM_STRING(net_dpaa2,
+RTE_PMD_REGISTER_DPAA2(NET_DPAA2_PMD_DRIVER_NAME, rte_dpaa2_pmd);
+RTE_PMD_REGISTER_PARAM_STRING(NET_DPAA2_PMD_DRIVER_NAME,
                DRIVER_LOOPBACK_MODE "=<int> "
                DRIVER_NO_PREFETCH_MODE "=<int>"
                DRIVER_TX_CONF "=<int>"
index 7b76ca7..b9c729f 100644 (file)
@@ -19,6 +19,7 @@
 
 #define DPAA2_MIN_RX_BUF_SIZE 512
 #define DPAA2_MAX_RX_PKT_LEN  10240 /*WRIOP support*/
+#define NET_DPAA2_PMD_DRIVER_NAME net_dpaa2
 
 #define MAX_TCS                        DPNI_MAX_TC
 #define MAX_RX_QUEUES          128
index 811f417..d347f4d 100644 (file)
@@ -68,6 +68,9 @@ rte_pmd_dpaa2_mux_flow_create(uint32_t dpdmux_id,
        int ret;
        static int i;
 
+       if (!pattern || !actions || !pattern[0] || !actions[0])
+               return NULL;
+
        /* Find the DPDMUX from dpdmux_id in our list */
        dpdmux_dev = get_dpdmux_from_id(dpdmux_id);
        if (!dpdmux_dev) {