From eb5b80a49a09bc1d4af4a5ec4c3e6c3e64899aa3 Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Tue, 15 Feb 2011 16:28:20 -0500 Subject: [PATCH] --- yaml --- r: 286269 b: refs/heads/master c: 740216fc59cba54f65187c9ed92f29bce3cf8778 h: refs/heads/master i: 286267: 38e76da4ef78e9f44266de9c6be2d45048245253 v: v3 --- [refs] | 2 +- trunk/drivers/block/nvme.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 32c82cf8dc38..0de5fffda575 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b348b7d54368c87811907a8e88f0d96713c43009 +refs/heads/master: 740216fc59cba54f65187c9ed92f29bce3cf8778 diff --git a/trunk/drivers/block/nvme.c b/trunk/drivers/block/nvme.c index f3aa8097e675..df1d8bda8c7c 100644 --- a/trunk/drivers/block/nvme.c +++ b/trunk/drivers/block/nvme.c @@ -1112,6 +1112,8 @@ static int nvme_kthread(void *data) int i; for (i = 0; i < dev->queue_count; i++) { struct nvme_queue *nvmeq = dev->queues[i]; + if (!nvmeq) + continue; spin_lock_irq(&nvmeq->q_lock); if (nvme_process_cq(nvmeq)) printk("process_cq did something\n"); @@ -1437,17 +1439,21 @@ static int __devinit nvme_probe(struct pci_dev *pdev, goto unmap; dev->queue_count++; - result = nvme_dev_add(dev); - if (result) - goto delete; - spin_lock(&dev_list_lock); list_add(&dev->node, &dev_list); spin_unlock(&dev_list_lock); + result = nvme_dev_add(dev); + if (result) + goto delete; + return 0; delete: + spin_lock(&dev_list_lock); + list_del(&dev->node); + spin_unlock(&dev_list_lock); + nvme_free_queues(dev); unmap: iounmap(dev->bar);