]> err.no Git - linux-2.6/commitdiff
IB/ehca: Remove tgid checking
authorHoang-Nam Nguyen <hnguyen@de.ibm.com>
Thu, 17 Apr 2008 04:01:13 +0000 (21:01 -0700)
committerRoland Dreier <rolandd@cisco.com>
Thu, 17 Apr 2008 04:01:13 +0000 (21:01 -0700)
Pavel Emelyanov <xemul@openvz.org> mentioned in <http://lkml.org/lkml/2008/3/17/131>
that the task_struct->tgid field is about to become deprecated, so the
uses in the ehca driver need to be fixed up.

However, all the uses in ehca are for some object ownership checking
that is not really needed, and anyway is implementing a policy that
should be in common code rather than a low-level driver.  So just
remove all the checks.

Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ehca/ehca_av.c
drivers/infiniband/hw/ehca/ehca_classes.h
drivers/infiniband/hw/ehca/ehca_cq.c
drivers/infiniband/hw/ehca/ehca_mrmw.c
drivers/infiniband/hw/ehca/ehca_pd.c
drivers/infiniband/hw/ehca/ehca_qp.c
drivers/infiniband/hw/ehca/ehca_uverbs.c

index 194c1c30cf63c4d2fd16a75619e6d4ec2aac4dc1..56735ea2fc576746ebb22350e8c3b18009279f79 100644 (file)
@@ -41,9 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#include <asm/current.h>
-
 #include "ehca_tools.h"
 #include "ehca_iverbs.h"
 #include "hcp_if.h"
@@ -170,17 +167,8 @@ int ehca_modify_ah(struct ib_ah *ah, struct ib_ah_attr *ah_attr)
 {
        struct ehca_av *av;
        struct ehca_ud_av new_ehca_av;
-       struct ehca_pd *my_pd = container_of(ah->pd, struct ehca_pd, ib_pd);
        struct ehca_shca *shca = container_of(ah->pd->device, struct ehca_shca,
                                              ib_device);
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(ah->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
 
        memset(&new_ehca_av, 0, sizeof(new_ehca_av));
        new_ehca_av.sl = ah_attr->sl;
@@ -242,15 +230,6 @@ int ehca_modify_ah(struct ib_ah *ah, struct ib_ah_attr *ah_attr)
 int ehca_query_ah(struct ib_ah *ah, struct ib_ah_attr *ah_attr)
 {
        struct ehca_av *av = container_of(ah, struct ehca_av, ib_ah);
-       struct ehca_pd *my_pd = container_of(ah->pd, struct ehca_pd, ib_pd);
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(ah->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
 
        memcpy(&ah_attr->grh.dgid, &av->av.grh.word_3,
               sizeof(ah_attr->grh.dgid));
@@ -273,16 +252,6 @@ int ehca_query_ah(struct ib_ah *ah, struct ib_ah_attr *ah_attr)
 
 int ehca_destroy_ah(struct ib_ah *ah)
 {
-       struct ehca_pd *my_pd = container_of(ah->pd, struct ehca_pd, ib_pd);
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(ah->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
-
        kmem_cache_free(av_cache, container_of(ah, struct ehca_av, ib_ah));
 
        return 0;
index 92cce8aacbb7279d3f45af63ac8e812001111ef6..0d13fe0a260b182678134ac29acef7ac90bf4648 100644 (file)
@@ -132,7 +132,6 @@ struct ehca_shca {
 struct ehca_pd {
        struct ib_pd ib_pd;
        struct ipz_pd fw_pd;
-       u32 ownpid;
        /* small queue mgmt */
        struct mutex lock;
        struct list_head free[2];
@@ -215,7 +214,6 @@ struct ehca_cq {
        atomic_t nr_events; /* #events seen */
        wait_queue_head_t wait_completion;
        spinlock_t task_lock;
-       u32 ownpid;
        /* mmap counter for resources mapped into user space */
        u32 mm_count_queue;
        u32 mm_count_galpa;
index 0467c158d4a997f2254b52f06d5fe281ae5f88f6..ec0cfcf3073f305dfd6ac796016f273f4db6f58f 100644 (file)
@@ -43,8 +43,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <asm/current.h>
-
 #include "ehca_iverbs.h"
 #include "ehca_classes.h"
 #include "ehca_irq.h"
@@ -148,7 +146,6 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
        spin_lock_init(&my_cq->task_lock);
        atomic_set(&my_cq->nr_events, 0);
        init_waitqueue_head(&my_cq->wait_completion);
-       my_cq->ownpid = current->tgid;
 
        cq = &my_cq->ib_cq;
 
@@ -320,7 +317,6 @@ int ehca_destroy_cq(struct ib_cq *cq)
        struct ehca_shca *shca = container_of(device, struct ehca_shca,
                                              ib_device);
        struct ipz_adapter_handle adapter_handle = shca->ipz_hca_handle;
-       u32 cur_pid = current->tgid;
        unsigned long flags;
 
        if (cq->uobject) {
@@ -329,12 +325,6 @@ int ehca_destroy_cq(struct ib_cq *cq)
                                 "user space cq_num=%x", my_cq->cq_number);
                        return -EINVAL;
                }
-               if (my_cq->ownpid != cur_pid) {
-                       ehca_err(device, "Invalid caller pid=%x ownpid=%x "
-                                "cq_num=%x",
-                                cur_pid, my_cq->ownpid, my_cq->cq_number);
-                       return -EINVAL;
-               }
        }
 
        /*
@@ -374,15 +364,6 @@ int ehca_destroy_cq(struct ib_cq *cq)
 
 int ehca_resize_cq(struct ib_cq *cq, int cqe, struct ib_udata *udata)
 {
-       struct ehca_cq *my_cq = container_of(cq, struct ehca_cq, ib_cq);
-       u32 cur_pid = current->tgid;
-
-       if (cq->uobject && my_cq->ownpid != cur_pid) {
-               ehca_err(cq->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_cq->ownpid);
-               return -EINVAL;
-       }
-
        /* TODO: proper resize needs to be done */
        ehca_err(cq->device, "not implemented yet");
 
index 5e99c45493c18cba256f6f01c59a0f3654867b62..f26997fc00f88b810761aa6c742b254468694e4b 100644 (file)
@@ -40,8 +40,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <asm/current.h>
-
 #include <rdma/ib_umem.h>
 
 #include "ehca_iverbs.h"
@@ -419,7 +417,6 @@ int ehca_rereg_phys_mr(struct ib_mr *mr,
        struct ehca_shca *shca =
                container_of(mr->device, struct ehca_shca, ib_device);
        struct ehca_mr *e_mr = container_of(mr, struct ehca_mr, ib.ib_mr);
-       struct ehca_pd *my_pd = container_of(mr->pd, struct ehca_pd, ib_pd);
        u64 new_size;
        u64 *new_start;
        u32 new_acl;
@@ -429,15 +426,6 @@ int ehca_rereg_phys_mr(struct ib_mr *mr,
        u32 num_kpages = 0;
        u32 num_hwpages = 0;
        struct ehca_mr_pginfo pginfo;
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           (my_pd->ownpid != cur_pid)) {
-               ehca_err(mr->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               ret = -EINVAL;
-               goto rereg_phys_mr_exit0;
-       }
 
        if (!(mr_rereg_mask & IB_MR_REREG_TRANS)) {
                /* TODO not supported, because PHYP rereg hCall needs pages */
@@ -577,19 +565,9 @@ int ehca_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
        struct ehca_shca *shca =
                container_of(mr->device, struct ehca_shca, ib_device);
        struct ehca_mr *e_mr = container_of(mr, struct ehca_mr, ib.ib_mr);
-       struct ehca_pd *my_pd = container_of(mr->pd, struct ehca_pd, ib_pd);
-       u32 cur_pid = current->tgid;
        unsigned long sl_flags;
        struct ehca_mr_hipzout_parms hipzout;
 
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           (my_pd->ownpid != cur_pid)) {
-               ehca_err(mr->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               ret = -EINVAL;
-               goto query_mr_exit0;
-       }
-
        if ((e_mr->flags & EHCA_MR_FLAG_FMR)) {
                ehca_err(mr->device, "not supported for FMR, mr=%p e_mr=%p "
                         "e_mr->flags=%x", mr, e_mr, e_mr->flags);
@@ -634,16 +612,6 @@ int ehca_dereg_mr(struct ib_mr *mr)
        struct ehca_shca *shca =
                container_of(mr->device, struct ehca_shca, ib_device);
        struct ehca_mr *e_mr = container_of(mr, struct ehca_mr, ib.ib_mr);
-       struct ehca_pd *my_pd = container_of(mr->pd, struct ehca_pd, ib_pd);
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           (my_pd->ownpid != cur_pid)) {
-               ehca_err(mr->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               ret = -EINVAL;
-               goto dereg_mr_exit0;
-       }
 
        if ((e_mr->flags & EHCA_MR_FLAG_FMR)) {
                ehca_err(mr->device, "not supported for FMR, mr=%p e_mr=%p "
index 43bcf085fcf21808c11b6075cc6fd4d80e7f926d..2fe554855fa5bbdef4ee1ff0aa63982231393094 100644 (file)
@@ -38,8 +38,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <asm/current.h>
-
 #include "ehca_tools.h"
 #include "ehca_iverbs.h"
 
@@ -58,7 +56,6 @@ struct ib_pd *ehca_alloc_pd(struct ib_device *device,
                return ERR_PTR(-ENOMEM);
        }
 
-       pd->ownpid = current->tgid;
        for (i = 0; i < 2; i++) {
                INIT_LIST_HEAD(&pd->free[i]);
                INIT_LIST_HEAD(&pd->full[i]);
@@ -85,18 +82,10 @@ struct ib_pd *ehca_alloc_pd(struct ib_device *device,
 
 int ehca_dealloc_pd(struct ib_pd *pd)
 {
-       u32 cur_pid = current->tgid;
        struct ehca_pd *my_pd = container_of(pd, struct ehca_pd, ib_pd);
        int i, leftovers = 0;
        struct ipz_small_queue_page *page, *tmp;
 
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(pd->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
-
        for (i = 0; i < 2; i++) {
                list_splice(&my_pd->full[i], &my_pd->free[i]);
                list_for_each_entry_safe(page, tmp, &my_pd->free[i], list) {
index 1012f15a7140e11cf579548069a80f890389ce6a..a9fd419855cb1b814418d295aa0fb952b1f992cd 100644 (file)
@@ -43,9 +43,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#include <asm/current.h>
-
 #include "ehca_classes.h"
 #include "ehca_tools.h"
 #include "ehca_qes.h"
@@ -1526,16 +1523,6 @@ int ehca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
        struct ehca_shca *shca = container_of(ibqp->device, struct ehca_shca,
                                              ib_device);
        struct ehca_qp *my_qp = container_of(ibqp, struct ehca_qp, ib_qp);
-       struct ehca_pd *my_pd = container_of(my_qp->ib_qp.pd, struct ehca_pd,
-                                            ib_pd);
-       u32 cur_pid = current->tgid;
-
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(ibqp->pd->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
 
        /* The if-block below caches qp_attr to be modified for GSI and SMI
         * qps during the initialization by ib_mad. When the respective port
@@ -1636,23 +1623,13 @@ int ehca_query_qp(struct ib_qp *qp,
                  int qp_attr_mask, struct ib_qp_init_attr *qp_init_attr)
 {
        struct ehca_qp *my_qp = container_of(qp, struct ehca_qp, ib_qp);
-       struct ehca_pd *my_pd = container_of(my_qp->ib_qp.pd, struct ehca_pd,
-                                            ib_pd);
        struct ehca_shca *shca = container_of(qp->device, struct ehca_shca,
                                              ib_device);
        struct ipz_adapter_handle adapter_handle = shca->ipz_hca_handle;
        struct hcp_modify_qp_control_block *qpcb;
-       u32 cur_pid = current->tgid;
        int cnt, ret = 0;
        u64 h_ret;
 
-       if (my_pd->ib_pd.uobject  && my_pd->ib_pd.uobject->context  &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(qp->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
-
        if (qp_attr_mask & QP_ATTR_QUERY_NOT_SUPPORTED) {
                ehca_err(qp->device, "Invalid attribute mask "
                         "ehca_qp=%p qp_num=%x qp_attr_mask=%x ",
@@ -1797,8 +1774,6 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 {
        struct ehca_qp *my_qp =
                container_of(ibsrq, struct ehca_qp, ib_srq);
-       struct ehca_pd *my_pd =
-               container_of(ibsrq->pd, struct ehca_pd, ib_pd);
        struct ehca_shca *shca =
                container_of(ibsrq->pd->device, struct ehca_shca, ib_device);
        struct hcp_modify_qp_control_block *mqpcb;
@@ -1806,14 +1781,6 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
        u64 h_ret;
        int ret = 0;
 
-       u32 cur_pid = current->tgid;
-       if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(ibsrq->pd->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
-
        mqpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
        if (!mqpcb) {
                ehca_err(ibsrq->device, "Could not get zeroed page for mqpcb "
@@ -1864,22 +1831,13 @@ modify_srq_exit0:
 int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr)
 {
        struct ehca_qp *my_qp = container_of(srq, struct ehca_qp, ib_srq);
-       struct ehca_pd *my_pd = container_of(srq->pd, struct ehca_pd, ib_pd);
        struct ehca_shca *shca = container_of(srq->device, struct ehca_shca,
                                              ib_device);
        struct ipz_adapter_handle adapter_handle = shca->ipz_hca_handle;
        struct hcp_modify_qp_control_block *qpcb;
-       u32 cur_pid = current->tgid;
        int ret = 0;
        u64 h_ret;
 
-       if (my_pd->ib_pd.uobject  && my_pd->ib_pd.uobject->context  &&
-           my_pd->ownpid != cur_pid) {
-               ehca_err(srq->device, "Invalid caller pid=%x ownpid=%x",
-                        cur_pid, my_pd->ownpid);
-               return -EINVAL;
-       }
-
        qpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
        if (!qpcb) {
                ehca_err(srq->device, "Out of memory for qpcb "
@@ -1919,7 +1877,6 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
        struct ehca_pd *my_pd = container_of(my_qp->ib_qp.pd, struct ehca_pd,
                                             ib_pd);
        struct ehca_sport *sport = &shca->sport[my_qp->init_attr.port_num - 1];
-       u32 cur_pid = current->tgid;
        u32 qp_num = my_qp->real_qp_num;
        int ret;
        u64 h_ret;
@@ -1934,11 +1891,6 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
                                 "user space qp_num=%x", qp_num);
                        return -EINVAL;
                }
-               if (my_pd->ownpid != cur_pid) {
-                       ehca_err(dev, "Invalid caller pid=%x ownpid=%x",
-                                cur_pid, my_pd->ownpid);
-                       return -EINVAL;
-               }
        }
 
        if (my_qp->send_cq) {
index 5234d6c15c49668555430789fb300d7d42819ad0..1b07f2beafaf1426713d1475fa2969db4b485141 100644 (file)
@@ -40,8 +40,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <asm/current.h>
-
 #include "ehca_classes.h"
 #include "ehca_iverbs.h"
 #include "ehca_mrmw.h"
@@ -253,11 +251,9 @@ int ehca_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
        u32 idr_handle = fileoffset & 0x1FFFFFF;
        u32 q_type = (fileoffset >> 27) & 0x1;    /* CQ, QP,...        */
        u32 rsrc_type = (fileoffset >> 25) & 0x3; /* sq,rq,cmnd_window */
-       u32 cur_pid = current->tgid;
        u32 ret;
        struct ehca_cq *cq;
        struct ehca_qp *qp;
-       struct ehca_pd *pd;
        struct ib_uobject *uobject;
 
        switch (q_type) {
@@ -270,13 +266,6 @@ int ehca_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
                if (!cq)
                        return -EINVAL;
 
-               if (cq->ownpid != cur_pid) {
-                       ehca_err(cq->ib_cq.device,
-                                "Invalid caller pid=%x ownpid=%x",
-                                cur_pid, cq->ownpid);
-                       return -ENOMEM;
-               }
-
                if (!cq->ib_cq.uobject || cq->ib_cq.uobject->context != context)
                        return -EINVAL;
 
@@ -298,14 +287,6 @@ int ehca_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
                if (!qp)
                        return -EINVAL;
 
-               pd = container_of(qp->ib_qp.pd, struct ehca_pd, ib_pd);
-               if (pd->ownpid != cur_pid) {
-                       ehca_err(qp->ib_qp.device,
-                                "Invalid caller pid=%x ownpid=%x",
-                                cur_pid, pd->ownpid);
-                       return -ENOMEM;
-               }
-
                uobject = IS_SRQ(qp) ? qp->ib_srq.uobject : qp->ib_qp.uobject;
                if (!uobject || uobject->context != context)
                        return -EINVAL;