fbarray: fix potential null-dereference
authorAnatoly Burakov <anatoly.burakov@intel.com>
Tue, 17 Apr 2018 15:44:07 +0000 (16:44 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 23 Apr 2018 20:44:21 +0000 (22:44 +0200)
We get pointer to mask before we check if fbarray is NULL. Fix
by moving getting mask pointer to until after NULL check.

Coverity issue: 272579
Fixes: c44d09811b40 ("eal: add shared indexed file-backed array")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
lib/librte_eal/common/eal_common_fbarray.c

index 2263f4c..d17611b 100644 (file)
@@ -355,7 +355,7 @@ find_contig(const struct rte_fbarray *arr, unsigned int start, bool used)
 static int
 set_used(struct rte_fbarray *arr, unsigned int idx, bool used)
 {
-       struct used_mask *msk = get_used_mask(arr->data, arr->elt_sz, arr->len);
+       struct used_mask *msk;
        uint64_t msk_bit = 1ULL << MASK_LEN_TO_MOD(idx);
        unsigned int msk_idx = MASK_LEN_TO_IDX(idx);
        bool already_used;
@@ -365,6 +365,7 @@ set_used(struct rte_fbarray *arr, unsigned int idx, bool used)
                rte_errno = EINVAL;
                return -1;
        }
+       msk = get_used_mask(arr->data, arr->elt_sz, arr->len);
        ret = 0;
 
        /* prevent array from changing under us */