Commit 88171cfe authored by Roland Dreier's avatar Roland Dreier

IB/mthca: Fix error path in mthca_alloc_memfree()

The garbled logic in mthca_alloc_memfree() causes it to return 0, even
if it fails to allocate all doorbell records.  Fix it to return -ENOMEM
when it fails.
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 31726798
...@@ -1088,21 +1088,21 @@ static void mthca_unmap_memfree(struct mthca_dev *dev, ...@@ -1088,21 +1088,21 @@ static void mthca_unmap_memfree(struct mthca_dev *dev,
static int mthca_alloc_memfree(struct mthca_dev *dev, static int mthca_alloc_memfree(struct mthca_dev *dev,
struct mthca_qp *qp) struct mthca_qp *qp)
{ {
int ret = 0;
if (mthca_is_memfree(dev)) { if (mthca_is_memfree(dev)) {
qp->rq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_RQ,
qp->qpn, &qp->rq.db); qp->qpn, &qp->rq.db);
if (qp->rq.db_index < 0) if (qp->rq.db_index < 0)
return ret; return -ENOMEM;
qp->sq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_SQ, qp->sq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_SQ,
qp->qpn, &qp->sq.db); qp->qpn, &qp->sq.db);
if (qp->sq.db_index < 0) if (qp->sq.db_index < 0) {
mthca_free_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index); mthca_free_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index);
return -ENOMEM;
}
} }
return ret; return 0;
} }
static void mthca_free_memfree(struct mthca_dev *dev, static void mthca_free_memfree(struct mthca_dev *dev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment