net/enic: fix build with GCC 7.5
authorFerruh Yigit <ferruh.yigit@intel.com>
Fri, 15 Oct 2021 10:28:18 +0000 (11:28 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 18 Oct 2021 15:53:17 +0000 (17:53 +0200)
Build error:
../drivers/net/enic/enic_fm_flow.c: In function 'enic_fm_flow_parse':
../drivers/net/enic/enic_fm_flow.c:1467:24:
error: 'dev' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
    struct rte_eth_dev *dev;
                        ^~~
../drivers/net/enic/enic_fm_flow.c:1580:24:
error: 'dev' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
    struct rte_eth_dev *dev;
                        ^~~
../drivers/net/enic/enic_fm_flow.c:1599:24:
error: 'dev' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
    struct rte_eth_dev *dev;
                        ^~~

Build error looks like false positive, but to silence the compiler
initializing the pointer with NULL.

Bugzilla ID: 812
Fixes: 54bd4ebe8b05 ("net/enic: support meta flow actions to overrule destinations")

Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
drivers/net/enic/enic_fm_flow.c

index 4092ff1..2c60bb8 100644 (file)
@@ -1464,7 +1464,7 @@ enic_fm_copy_action(struct enic_flowman *fm,
                }
                case RTE_FLOW_ACTION_TYPE_PORT_ID: {
                        const struct rte_flow_action_port_id *port;
-                       struct rte_eth_dev *dev;
+                       struct rte_eth_dev *dev = NULL;
 
                        if (!ingress && (overlap & PORT_ID)) {
                                ENICPMD_LOG(DEBUG, "cannot have multiple egress PORT_ID actions");
@@ -1577,7 +1577,7 @@ enic_fm_copy_action(struct enic_flowman *fm,
                }
                case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: {
                        const struct rte_flow_action_ethdev *ethdev;
-                       struct rte_eth_dev *dev;
+                       struct rte_eth_dev *dev = NULL;
 
                        ethdev = actions->conf;
                        ret = enic_fm_check_transfer_dst(enic, ethdev->port_id,
@@ -1596,7 +1596,7 @@ enic_fm_copy_action(struct enic_flowman *fm,
                }
                case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: {
                        const struct rte_flow_action_ethdev *ethdev;
-                       struct rte_eth_dev *dev;
+                       struct rte_eth_dev *dev = NULL;
 
                        if (overlap & PORT_ID) {
                                ENICPMD_LOG(DEBUG, "cannot have multiple egress PORT_ID actions");