lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
                                "0361 Unsupported CQ count. (%d)\n",
                                cq->entry_count);
-               if (cq->entry_count < 256)
-                       return -EINVAL;
+               if (cq->entry_count < 256) {
+                       status = -EINVAL;
+                       goto out;
+               }
                /* otherwise default to smallest count (drop through) */
        case 256:
                bf_set(lpfc_cq_context_count, &cq_create->u.request.context,
                lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
                                "0362 Unsupported MQ count. (%d)\n",
                                mq->entry_count);
-               if (mq->entry_count < 16)
-                       return -EINVAL;
+               if (mq->entry_count < 16) {
+                       status = -EINVAL;
+                       goto out;
+               }
                /* otherwise default to smallest count (drop through) */
        case 16:
                bf_set(lpfc_mq_context_ring_size,
                        lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
                                        "2535 Unsupported RQ count. (%d)\n",
                                        hrq->entry_count);
-                       if (hrq->entry_count < 512)
-                               return -EINVAL;
+                       if (hrq->entry_count < 512) {
+                               status = -EINVAL;
+                               goto out;
+                       }
                        /* otherwise default to smallest count (drop through) */
                case 512:
                        bf_set(lpfc_rq_context_rqe_count,
                        lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
                                        "2536 Unsupported RQ count. (%d)\n",
                                        drq->entry_count);
-                       if (drq->entry_count < 512)
-                               return -EINVAL;
+                       if (drq->entry_count < 512) {
+                               status = -EINVAL;
+                               goto out;
+                       }
                        /* otherwise default to smallest count (drop through) */
                case 512:
                        bf_set(lpfc_rq_context_rqe_count,