In the next commit, a (unrelated) change will be done on the logging
macros in this driver.

After this change, compilation with O3 fails with the following warning:
../drivers/net/octeon_ep/otx_ep_ethdev.c: In function
        ‘otx_ep_dev_mtu_set’:
../drivers/net/octeon_ep/otx_ep_ethdev.c:200:12: error: ‘devinfo.max_mtu’
        may be used uninitialized [-Werror=maybe-uninitialized]
  200 |         if (mtu > devinfo.max_mtu) {
      |            ^
../drivers/net/octeon_ep/otx_ep_ethdev.c:186:33: note: ‘devinfo.max_mtu’
        was declared here
  186 |         struct rte_eth_dev_info devinfo;
      |                                 ^~~~~~~
cc1: all warnings being treated as errors

The devinfo object is passed through otx_ep_dev_info_get() which
initializes devinfo.max_mtu and returns 0.
This return code is checked at line 189 and so devinfo.max_mtu is
supposed to be initialized at this point.
This seems like a compiler optimisation bug, but we will have to live
with it.

Signed-off-by: David Marchand <david.march...@redhat.com>
---
 drivers/net/octeon_ep/otx_ep_ethdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/octeon_ep/otx_ep_ethdev.c 
b/drivers/net/octeon_ep/otx_ep_ethdev.c
index c4a5a67c79..adc19c72b0 100644
--- a/drivers/net/octeon_ep/otx_ep_ethdev.c
+++ b/drivers/net/octeon_ep/otx_ep_ethdev.c
@@ -186,6 +186,7 @@ otx_ep_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t 
mtu)
        struct rte_eth_dev_info devinfo;
        int32_t ret = 0;
 
+       memset(&devinfo, 0, sizeof(devinfo));
        if (otx_ep_dev_info_get(eth_dev, &devinfo)) {
                otx_ep_err("Cannot set MTU to %u: failed to get device info", 
mtu);
                return -EPERM;
-- 
2.46.0

Reply via email to