aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/cm.c2
-rw-r--r--drivers/infiniband/hw/mlx4/cm.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 98281fe5ea4b..784b97cb05b0 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -390,7 +390,7 @@ static int cm_alloc_id(struct cm_id_private *cm_id_priv)
390 390
391 id = idr_alloc(&cm.local_id_table, cm_id_priv, next_id, 0, GFP_NOWAIT); 391 id = idr_alloc(&cm.local_id_table, cm_id_priv, next_id, 0, GFP_NOWAIT);
392 if (id >= 0) 392 if (id >= 0)
393 next_id = ((unsigned) id + 1) & MAX_IDR_MASK; 393 next_id = max(id + 1, 0);
394 394
395 spin_unlock_irqrestore(&cm.lock, flags); 395 spin_unlock_irqrestore(&cm.lock, flags);
396 idr_preload_end(); 396 idr_preload_end();
diff --git a/drivers/infiniband/hw/mlx4/cm.c b/drivers/infiniband/hw/mlx4/cm.c
index 80e59ed864b3..e0d79b2395e4 100644
--- a/drivers/infiniband/hw/mlx4/cm.c
+++ b/drivers/infiniband/hw/mlx4/cm.c
@@ -225,7 +225,7 @@ id_map_alloc(struct ib_device *ibdev, int slave_id, u32 sl_cm_id)
225 225
226 ret = idr_alloc(&sriov->pv_id_table, ent, next_id, 0, GFP_NOWAIT); 226 ret = idr_alloc(&sriov->pv_id_table, ent, next_id, 0, GFP_NOWAIT);
227 if (ret >= 0) { 227 if (ret >= 0) {
228 next_id = ((unsigned)ret + 1) & MAX_IDR_MASK; 228 next_id = max(ret + 1, 0);
229 ent->pv_cm_id = (u32)ret; 229 ent->pv_cm_id = (u32)ret;
230 sl_id_map_add(ibdev, ent); 230 sl_id_map_add(ibdev, ent);
231 list_add_tail(&ent->list, &sriov->cm_list); 231 list_add_tail(&ent->list, &sriov->cm_list);