RDMA: Check umem pointer validity prior to release
Update ib_umem_release() to behave similarly to kfree() and allow
submitting NULL pointer as safe input to this function.
Fixes: a52c8e2469
("RDMA: Clean destroy CQ in drivers do not return errors")
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
このコミットが含まれているのは:
@@ -277,9 +277,8 @@ err_dbmap:
|
||||
err_mtt:
|
||||
mlx4_mtt_cleanup(dev->dev, &cq->buf.mtt);
|
||||
|
||||
if (udata)
|
||||
ib_umem_release(cq->umem);
|
||||
else
|
||||
ib_umem_release(cq->umem);
|
||||
if (!udata)
|
||||
mlx4_ib_free_cq_buf(dev, &cq->buf, cq->ibcq.cqe);
|
||||
|
||||
err_db:
|
||||
@@ -468,11 +467,8 @@ err_buf:
|
||||
kfree(cq->resize_buf);
|
||||
cq->resize_buf = NULL;
|
||||
|
||||
if (cq->resize_umem) {
|
||||
ib_umem_release(cq->resize_umem);
|
||||
cq->resize_umem = NULL;
|
||||
}
|
||||
|
||||
ib_umem_release(cq->resize_umem);
|
||||
cq->resize_umem = NULL;
|
||||
out:
|
||||
mutex_unlock(&cq->resize_mutex);
|
||||
|
||||
@@ -494,11 +490,11 @@ void mlx4_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata)
|
||||
struct mlx4_ib_ucontext,
|
||||
ibucontext),
|
||||
&mcq->db);
|
||||
ib_umem_release(mcq->umem);
|
||||
} else {
|
||||
mlx4_ib_free_cq_buf(dev, &mcq->buf, cq->cqe);
|
||||
mlx4_db_free(dev->dev, &mcq->db);
|
||||
}
|
||||
ib_umem_release(mcq->umem);
|
||||
}
|
||||
|
||||
static void dump_cqe(void *cqe)
|
||||
|
新しいイシューから参照
ユーザーをブロックする