struct usnic_vnic *vnic;
        struct usnic_ib_qp_grp *qp_grp;
        struct device *dev, **dev_list;
-       int i, found = 0;
+       int i;
 
        BUG_ON(!mutex_is_locked(&us_ibdev->usdev_lock));
 
                                                us_ibdev->ib_dev.name,
                                                pci_name(usnic_vnic_get_pdev(
                                                                        vnic)));
-                               found = 1;
-                               break;
+                               qp_grp = usnic_ib_qp_grp_create(us_ibdev->ufdev,
+                                                               vf, pd,
+                                                               res_spec,
+                                                               trans_spec);
+
+                               spin_unlock(&vf->lock);
+                               goto qp_grp_check;
                        }
                        spin_unlock(&vf->lock);
 
                usnic_uiom_free_dev_list(dev_list);
        }
 
-       if (!found) {
-               /* Try to find resources on an unused vf */
-               list_for_each_entry(vf, &us_ibdev->vf_dev_list, link) {
-                       spin_lock(&vf->lock);
-                       vnic = vf->vnic;
-                       if (vf->qp_grp_ref_cnt == 0 &&
-                               usnic_vnic_check_room(vnic, res_spec) == 0) {
-                               found = 1;
-                               break;
-                       }
+       /* Try to find resources on an unused vf */
+       list_for_each_entry(vf, &us_ibdev->vf_dev_list, link) {
+               spin_lock(&vf->lock);
+               vnic = vf->vnic;
+               if (vf->qp_grp_ref_cnt == 0 &&
+                   usnic_vnic_check_room(vnic, res_spec) == 0) {
+                       qp_grp = usnic_ib_qp_grp_create(us_ibdev->ufdev, vf,
+                                                       pd, res_spec,
+                                                       trans_spec);
+
                        spin_unlock(&vf->lock);
+                       goto qp_grp_check;
                }
+               spin_unlock(&vf->lock);
        }
 
-       if (!found) {
-               usnic_info("No free qp grp found on %s\n",
-                               us_ibdev->ib_dev.name);
-               return ERR_PTR(-ENOMEM);
-       }
+       usnic_info("No free qp grp found on %s\n", us_ibdev->ib_dev.name);
+       return ERR_PTR(-ENOMEM);
 
-       qp_grp = usnic_ib_qp_grp_create(us_ibdev->ufdev, vf, pd, res_spec,
-                                               trans_spec);
-       spin_unlock(&vf->lock);
+qp_grp_check:
        if (IS_ERR_OR_NULL(qp_grp)) {
                usnic_err("Failed to allocate qp_grp\n");
                return ERR_PTR(qp_grp ? PTR_ERR(qp_grp) : -ENOMEM);
        }
-
        return qp_grp;
 }