fbarray: fix overlap check
authorAnatoly Burakov <anatoly.burakov@intel.com>
Thu, 14 Jan 2021 15:02:45 +0000 (15:02 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Tue, 19 Jan 2021 12:12:59 +0000 (13:12 +0100)
When we're attaching fbarrays in secondary processes, we check for
whether the intended memory address for the fbarray is already in use by
some other, local fbarray. However, the check for end-overlap (i.e. to
see if our memory area's end overlaps with some other fbarray) is
incorrectly counting end offset as part of the overlap. Fix the check.

Fixes: 5b61c62cfd76 ("fbarray: add internal tailq for mapped areas")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Zhihong Peng <zhihongx.peng@intel.com>
lib/librte_eal/common/eal_common_fbarray.c

index 1220e2b..d974f3d 100644 (file)
@@ -110,7 +110,7 @@ overlap(const struct mem_area *ma, const void *start, size_t len)
        if (start >= ma_start && start < ma_end)
                return 1;
        /* end overlap? */
-       if (end >= ma_start && end < ma_end)
+       if (end > ma_start && end < ma_end)
                return 1;
        return 0;
 }