[dpdk-dev] [PATCH] ivshmem: fix overlap detection code

Anatoly Burakov anatoly.burakov at intel.com
Tue May 24 14:50:05 CEST 2016


Partial revert of an earlier ill-conceived "fix".
Adjacent segments can never be considered overlapping because we
are not comparing ends to starts, but rather starts to starts.
Therefore the earlier fix was wrong (plus it also had a typo).

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/librte_eal/linuxapp/eal/eal_ivshmem.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_ivshmem.c b/lib/librte_eal/linuxapp/eal/eal_ivshmem.c
index 07aec69..eea0314 100644
--- a/lib/librte_eal/linuxapp/eal/eal_ivshmem.c
+++ b/lib/librte_eal/linuxapp/eal/eal_ivshmem.c
@@ -184,21 +184,21 @@ overlap(const struct rte_memzone * mz1, const struct rte_memzone * mz2)
 	i_end2 = mz2->ioremap_addr + mz2->len;
 
 	/* check for overlap in virtual addresses */
-	if (start1 > start2 && start1 < end2)
+	if (start1 >= start2 && start1 < end2)
 		result |= VIRT;
 	if (start2 >= start1 && start2 < end1)
 		result |= VIRT;
 
 	/* check for overlap in physical addresses */
-	if (p_start1 > p_start2 && p_start1 < p_end2)
+	if (p_start1 >= p_start2 && p_start1 < p_end2)
 		result |= PHYS;
-	if (p_start2 > p_start1 && p_start2 < p_end1)
+	if (p_start2 >= p_start1 && p_start2 < p_end1)
 		result |= PHYS;
 
 	/* check for overlap in ioremap addresses */
-	if (i_start1 > i_start2 && i_start1 < i_end2)
+	if (i_start1 >= i_start2 && i_start1 < i_end2)
 		result |= IOREMAP;
-	if (i_start2 > i_start1 && i_start2 < i_end1)
+	if (i_start2 >= i_start1 && i_start2 < i_end1)
 		result |= IOREMAP;
 
 	return result;
-- 
2.5.5



More information about the dev mailing list