IB/qib: Cleanup qib_set_part_key() with direct returns
authorJoe Perches <joe@perches.com>
Tue, 14 Nov 2017 21:29:41 +0000 (16:29 -0500)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 11 Dec 2017 23:19:41 +0000 (16:19 -0700)
Perhaps the function is better written without
the empty bail: label and without setting ret
and just using return.

Combining the int/bool conversion of any and the
direct returns makes the resulting code clearer.

Tested-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/qib/qib_file_ops.c

index b5c2e42..a9a48b3 100644 (file)
@@ -568,20 +568,16 @@ done:
 static int qib_set_part_key(struct qib_ctxtdata *rcd, u16 key)
 {
        struct qib_pportdata *ppd = rcd->ppd;
-       int i, any = 0, pidx = -1;
+       int i, pidx = -1;
+       bool any = false;
        u16 lkey = key & 0x7FFF;
-       int ret;
 
-       if (lkey == (QIB_DEFAULT_P_KEY & 0x7FFF)) {
+       if (lkey == (QIB_DEFAULT_P_KEY & 0x7FFF))
                /* nothing to do; this key always valid */
-               ret = 0;
-               goto bail;
-       }
+               return 0;
 
-       if (!lkey) {
-               ret = -EINVAL;
-               goto bail;
-       }
+       if (!lkey)
+               return -EINVAL;
 
        /*
         * Set the full membership bit, because it has to be
@@ -594,18 +590,14 @@ static int qib_set_part_key(struct qib_ctxtdata *rcd, u16 key)
        for (i = 0; i < ARRAY_SIZE(rcd->pkeys); i++) {
                if (!rcd->pkeys[i] && pidx == -1)
                        pidx = i;
-               if (rcd->pkeys[i] == key) {
-                       ret = -EEXIST;
-                       goto bail;
-               }
+               if (rcd->pkeys[i] == key)
+                       return -EEXIST;
        }
-       if (pidx == -1) {
-               ret = -EBUSY;
-               goto bail;
-       }
-       for (any = i = 0; i < ARRAY_SIZE(ppd->pkeys); i++) {
+       if (pidx == -1)
+               return -EBUSY;
+       for (i = 0; i < ARRAY_SIZE(ppd->pkeys); i++) {
                if (!ppd->pkeys[i]) {
-                       any++;
+                       any = true;
                        continue;
                }
                if (ppd->pkeys[i] == key) {
@@ -613,44 +605,34 @@ static int qib_set_part_key(struct qib_ctxtdata *rcd, u16 key)
 
                        if (atomic_inc_return(pkrefs) > 1) {
                                rcd->pkeys[pidx] = key;
-                               ret = 0;
-                               goto bail;
-                       } else {
-                               /*
-                                * lost race, decrement count, catch below
-                                */
-                               atomic_dec(pkrefs);
-                               any++;
+                               return 0;
                        }
+                       /*
+                        * lost race, decrement count, catch below
+                        */
+                       atomic_dec(pkrefs);
+                       any = true;
                }
-               if ((ppd->pkeys[i] & 0x7FFF) == lkey) {
+               if ((ppd->pkeys[i] & 0x7FFF) == lkey)
                        /*
                         * It makes no sense to have both the limited and
                         * full membership PKEY set at the same time since
                         * the unlimited one will disable the limited one.
                         */
-                       ret = -EEXIST;
-                       goto bail;
-               }
-       }
-       if (!any) {
-               ret = -EBUSY;
-               goto bail;
+                       return -EEXIST;
        }
+       if (!any)
+               return -EBUSY;
        for (i = 0; i < ARRAY_SIZE(ppd->pkeys); i++) {
                if (!ppd->pkeys[i] &&
                    atomic_inc_return(&ppd->pkeyrefs[i]) == 1) {
                        rcd->pkeys[pidx] = key;
                        ppd->pkeys[i] = key;
                        (void) ppd->dd->f_set_ib_cfg(ppd, QIB_IB_CFG_PKEYS, 0);
-                       ret = 0;
-                       goto bail;
+                       return 0;
                }
        }
-       ret = -EBUSY;
-
-bail:
-       return ret;
+       return -EBUSY;
 }
 
 /**