spin_lock_irqsave(&xhci->lock, flags);
        virt_dev = xhci->devs[udev->slot_id];
-       if (command) {
+
+       if (command)
                in_ctx = command->in_ctx;
-               if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
-                               xhci_reserve_host_resources(xhci, in_ctx)) {
-                       spin_unlock_irqrestore(&xhci->lock, flags);
-                       xhci_warn(xhci, "Not enough host resources, "
-                                       "active endpoint contexts = %u\n",
-                                       xhci->num_active_eps);
-                       return -ENOMEM;
-               }
+       else
+               in_ctx = virt_dev->in_ctx;
 
+       if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
+                       xhci_reserve_host_resources(xhci, in_ctx)) {
+               spin_unlock_irqrestore(&xhci->lock, flags);
+               xhci_warn(xhci, "Not enough host resources, "
+                               "active endpoint contexts = %u\n",
+                               xhci->num_active_eps);
+               return -ENOMEM;
+       }
+
+       if (command) {
                cmd_completion = command->completion;
                cmd_status = &command->status;
                command->command_trb = xhci->cmd_ring->enqueue;
 
                list_add_tail(&command->cmd_list, &virt_dev->cmd_list);
        } else {
-               in_ctx = virt_dev->in_ctx;
-               if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
-                               xhci_reserve_host_resources(xhci, in_ctx)) {
-                       spin_unlock_irqrestore(&xhci->lock, flags);
-                       xhci_warn(xhci, "Not enough host resources, "
-                                       "active endpoint contexts = %u\n",
-                                       xhci->num_active_eps);
-                       return -ENOMEM;
-               }
                cmd_completion = &virt_dev->cmd_completion;
                cmd_status = &virt_dev->cmd_status;
        }