ivshmem: fix overlap detection
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). Fixes: d6cf31419e51 ("ivshmem: avoid infinite loop when concatenating segments") Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
f2027fb2c1
commit
a2113ebba5
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user