NVMe: Check returns from nvme_alloc_queue()
authorMatthew Wilcox <matthew.r.wilcox@intel.com>
Tue, 1 Feb 2011 13:39:04 +0000 (08:39 -0500)
committerMatthew Wilcox <matthew.r.wilcox@intel.com>
Fri, 4 Nov 2011 19:52:53 +0000 (15:52 -0400)
It can return NULL, so handle that.

Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
drivers/block/nvme.c

index 9377cf32f8131e1a1a1fa2030efb95959ecfe463..dc821776be949d8b2b298ce265bc413c14133c54 100644 (file)
@@ -619,6 +619,9 @@ static __devinit struct nvme_queue *nvme_create_queue(struct nvme_dev *dev,
        int result;
        struct nvme_queue *nvmeq = nvme_alloc_queue(dev, qid, cq_size, vector);
 
+       if (!nvmeq)
+               return NULL;
+
        result = adapter_alloc_cq(dev, qid, nvmeq);
        if (result < 0)
                goto free_nvmeq;
@@ -655,6 +658,8 @@ static int __devinit nvme_configure_admin_queue(struct nvme_dev *dev)
        dev->dbs = ((void __iomem *)dev->bar) + 4096;
 
        nvmeq = nvme_alloc_queue(dev, 0, 64, 0);
+       if (!nvmeq)
+               return -ENOMEM;
 
        aqa = nvmeq->q_depth - 1;
        aqa |= aqa << 16;