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.

Fixes: 7968917ccf64 ("net/enic: support meta flow actions to overrule 
destinations")

Reported-by: David Marchand <david.march...@redhat.com>
Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>
---
Cc: andrew.rybche...@oktetlabs.ru

I am not sure about the solution and I don't have environment to verify,
sending this patch to verify the solution in CI and trigger discussion
for fix.
The patch is still in next-net, when a proper fix is found, it can be
squashed in next-net.
---
 drivers/net/enic/enic_fm_flow.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/enic/enic_fm_flow.c b/drivers/net/enic/enic_fm_flow.c
index 4092ff1f6154..2c60bb864e23 100644
--- a/drivers/net/enic/enic_fm_flow.c
+++ b/drivers/net/enic/enic_fm_flow.c
@@ -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");
-- 
2.31.1

Reply via email to