net/dpaa2: fix possible use of uninitialized vars
authorAndrzej Ostruszka <aostruszka@marvell.com>
Thu, 7 Nov 2019 15:03:14 +0000 (16:03 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 8 Nov 2019 14:23:41 +0000 (15:23 +0100)
This patch fixes 'maybe-uninitialized' warnings reported by compiler
when using LTO.

Compiler warning pointing to this error (with LTO enabled):
error: ‘kg_cfg.extracts[0].masks[0].mask’ may be used uninitialized in
this function [-Werror=maybe-uninitialized]
    extr->masks[j].mask = cfg->extracts[i].masks[j].mask;

Fixes: 16bbc98a3e63 ("bus/fslmc: update MC to 10.3.x")
Cc: stable@dpdk.org
Signed-off-by: Andrzej Ostruszka <aostruszka@marvell.com>
drivers/net/dpaa2/base/dpaa2_hw_dpni.c
drivers/net/dpaa2/mc/dpkg.c

index 16555d7..47a8bda 100644 (file)
@@ -51,6 +51,7 @@ rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
        kg_cfg.extracts[0].type = DPKG_EXTRACT_FROM_DATA;
        kg_cfg.extracts[0].extract.from_data.offset = offset;
        kg_cfg.extracts[0].extract.from_data.size = size;
+       kg_cfg.extracts[0].num_of_byte_masks = 0;
        kg_cfg.num_extracts = 1;
 
        ret = dpkg_prepare_key_cfg(&kg_cfg, p_params);
index 80f94f4..1e171ee 100644 (file)
@@ -63,7 +63,10 @@ dpkg_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, uint8_t *key_cfg_buf)
                dpkg_set_field(extr->extract_type, EXTRACT_TYPE,
                               cfg->extracts[i].type);
 
-               for (j = 0; j < DPKG_NUM_OF_MASKS; j++) {
+               if (extr->num_of_byte_masks > DPKG_NUM_OF_MASKS)
+                       return -EINVAL;
+
+               for (j = 0; j < extr->num_of_byte_masks; j++) {
                        extr->masks[j].mask = cfg->extracts[i].masks[j].mask;
                        extr->masks[j].offset =
                                cfg->extracts[i].masks[j].offset;