static void nvmet_rdma_delete_ctrl(struct nvmet_ctrl *ctrl)
 {
-       struct nvmet_rdma_queue *queue;
+       struct nvmet_rdma_queue *queue, *n;
 
-restart:
        mutex_lock(&nvmet_rdma_queue_mutex);
-       list_for_each_entry(queue, &nvmet_rdma_queue_list, queue_list) {
-               if (queue->nvme_sq.ctrl == ctrl) {
-                       list_del_init(&queue->queue_list);
-                       mutex_unlock(&nvmet_rdma_queue_mutex);
-
-                       __nvmet_rdma_queue_disconnect(queue);
-                       goto restart;
-               }
+       list_for_each_entry_safe(queue, n, &nvmet_rdma_queue_list, queue_list) {
+               if (queue->nvme_sq.ctrl != ctrl)
+                       continue;
+               list_del_init(&queue->queue_list);
+               __nvmet_rdma_queue_disconnect(queue);
        }
        mutex_unlock(&nvmet_rdma_queue_mutex);
 }