From: Shahaf Shuler Date: Thu, 25 Jan 2018 16:18:03 +0000 (+0200) Subject: net/mlx5: fix memory region boundary checks X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=25f28d9d294d00a1c539d47a13c14ce282e31b09;p=dpdk.git net/mlx5: fix memory region boundary checks Since commit f81ec748434b ("net/mlx5: fix memory region lookup") the Memory Region (MR) are no longer overlaps. Comparing the end address of the MR should be exclusive, otherwise two contiguous MRs may cause wrong matching. Fixes: f81ec748434b ("net/mlx5: fix memory region lookup") Cc: stable@dpdk.org Signed-off-by: Xueming Li Signed-off-by: Shahaf Shuler Acked-by: Nelio Laranjeiro --- diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h index 7297f011a9..6d1bc85e6e 100644 --- a/drivers/net/mlx5/mlx5_rxtx.h +++ b/drivers/net/mlx5/mlx5_rxtx.h @@ -552,7 +552,7 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb) struct mlx5_mr *mr; assert(i < RTE_DIM(txq->mp2mr)); - if (likely(txq->mp2mr[i]->start <= addr && txq->mp2mr[i]->end >= addr)) + if (likely(txq->mp2mr[i]->start <= addr && txq->mp2mr[i]->end > addr)) return txq->mp2mr[i]->lkey; for (i = 0; (i != RTE_DIM(txq->mp2mr)); ++i) { if (unlikely(txq->mp2mr[i] == NULL || @@ -561,7 +561,7 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb) break; } if (txq->mp2mr[i]->start <= addr && - txq->mp2mr[i]->end >= addr) { + txq->mp2mr[i]->end > addr) { assert(txq->mp2mr[i]->lkey != (uint32_t)-1); txq->mr_cache_idx = i; return txq->mp2mr[i]->lkey;