[PATCH] IB/mthca: Don't try to set srq->last for userspace SRQs
authorRoland Dreier <rolandd@cisco.com>
Mon, 19 Sep 2005 16:17:56 +0000 (09:17 -0700)
committerRoland Dreier <rolandd@cisco.com>
Mon, 19 Sep 2005 16:17:56 +0000 (09:17 -0700)
Userspace SRQs don't have a buffer allocated for them in the kernel, so
it doesn't make sense to set srq->last during initialization.  In fact,
this can crash trying to follow a nonexistent buffer pointer.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_srq.c

index 45dedd2787a4dc8a7fc793ac812850c8553a888c..18998d48c53ec39fc3c21fba93a9903b71853f79 100644 (file)
@@ -172,6 +172,8 @@ static int mthca_alloc_srq_buf(struct mthca_dev *dev, struct mthca_pd *pd,
                        scatter->lkey = cpu_to_be32(MTHCA_INVAL_LKEY);
        }
 
+       srq->last = get_wqe(srq, srq->max - 1);
+
        return 0;
 }
 
@@ -263,7 +265,6 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
 
        srq->first_free = 0;
        srq->last_free  = srq->max - 1;
-       srq->last       = get_wqe(srq, srq->max - 1);
 
        return 0;