|
@@ -148,7 +148,7 @@ struct nvmet_fc_tgt_assoc {
|
|
|
u32 a_id;
|
|
|
struct nvmet_fc_tgtport *tgtport;
|
|
|
struct list_head a_list;
|
|
|
- struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES];
|
|
|
+ struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES + 1];
|
|
|
struct kref ref;
|
|
|
};
|
|
|
|
|
@@ -608,7 +608,7 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc,
|
|
|
unsigned long flags;
|
|
|
int ret;
|
|
|
|
|
|
- if (qid >= NVMET_NR_QUEUES)
|
|
|
+ if (qid > NVMET_NR_QUEUES)
|
|
|
return NULL;
|
|
|
|
|
|
queue = kzalloc((sizeof(*queue) +
|
|
@@ -888,7 +888,7 @@ nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc)
|
|
|
int i;
|
|
|
|
|
|
spin_lock_irqsave(&tgtport->lock, flags);
|
|
|
- for (i = NVMET_NR_QUEUES - 1; i >= 0; i--) {
|
|
|
+ for (i = NVMET_NR_QUEUES; i >= 0; i--) {
|
|
|
queue = assoc->queues[i];
|
|
|
if (queue) {
|
|
|
if (!nvmet_fc_tgt_q_get(queue))
|