From 1f7b672efdda79fa3f45812c944e5cd31a275d9a Mon Sep 17 00:00:00 2001 From: Bryan O'Sullivan Date: Sat, 1 Jul 2006 04:35:55 -0700 Subject: [PATCH] --- yaml --- r: 31546 b: refs/heads/master c: 4a45b7d4ece0e6dc425e9f66fa8b501b72d846db h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/infiniband/hw/ipath/ipath_mr.c | 5 +++++ trunk/drivers/infiniband/hw/ipath/ipath_qp.c | 8 ++++++++ trunk/drivers/infiniband/hw/ipath/ipath_verbs.c | 11 +++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9a423ac5e696..b952cffe8e89 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6665ddee85bfc336d691ea5132a2c20a1d0e8053 +refs/heads/master: 4a45b7d4ece0e6dc425e9f66fa8b501b72d846db diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_mr.c b/trunk/drivers/infiniband/hw/ipath/ipath_mr.c index 30936769ab3a..4ac31a5da330 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_mr.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_mr.c @@ -170,6 +170,11 @@ struct ib_mr *ipath_reg_user_mr(struct ib_pd *pd, struct ib_umem *region, int n, m, i; struct ib_mr *ret; + if (region->length == 0) { + ret = ERR_PTR(-EINVAL); + goto bail; + } + n = 0; list_for_each_entry(chunk, ®ion->chunk_list, list) n += chunk->nents; diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_qp.c b/trunk/drivers/infiniband/hw/ipath/ipath_qp.c index 47271be65b0f..e6fc4c02823f 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_qp.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_qp.c @@ -667,6 +667,14 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, goto bail; } + if (init_attr->cap.max_send_sge + + init_attr->cap.max_recv_sge + + init_attr->cap.max_send_wr + + init_attr->cap.max_recv_wr == 0) { + ret = ERR_PTR(-EINVAL); + goto bail; + } + switch (init_attr->qp_type) { case IB_QPT_UC: case IB_QPT_RC: diff --git a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c index 6af5402fe447..18375e831744 100644 --- a/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/trunk/drivers/infiniband/hw/ipath/ipath_verbs.c @@ -792,6 +792,17 @@ static struct ib_ah *ipath_create_ah(struct ib_pd *pd, goto bail; } + if (ah_attr->dlid == 0) { + ret = ERR_PTR(-EINVAL); + goto bail; + } + + if (ah_attr->port_num != 1 || + ah_attr->port_num > pd->device->phys_port_cnt) { + ret = ERR_PTR(-EINVAL); + goto bail; + } + ah = kmalloc(sizeof *ah, GFP_ATOMIC); if (!ah) { ret = ERR_PTR(-ENOMEM);