Merge branch 'for-4.7/drivers' of git://git.kernel.dk/linux-block
[linux-2.6-block.git] / drivers / nvme / host / pci.c
index 82a0fc200f4468b83142a4a1398982da67a3a029..0f093f14d3482394630b66c8586da5beb455d8c4 100644 (file)
@@ -321,8 +321,7 @@ static void nvme_free_iod(struct nvme_dev *dev, struct request *req)
        __le64 **list = iod_list(req);
        dma_addr_t prp_dma = iod->first_dma;
 
-       if (req->cmd_flags & REQ_DISCARD)
-               kfree(req->completion_data);
+       nvme_cleanup_cmd(req);
 
        if (iod->npages == 0)
                dma_pool_free(dev->prp_small_pool, list[0], prp_dma);
@@ -2015,14 +2014,12 @@ static void nvme_remove(struct pci_dev *pdev)
 {
        struct nvme_dev *dev = pci_get_drvdata(pdev);
 
-       del_timer_sync(&dev->watchdog_timer);
-
        nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_DELETING);
 
        pci_set_drvdata(pdev, NULL);
+       flush_work(&dev->reset_work);
        nvme_uninit_ctrl(&dev->ctrl);
        nvme_dev_disable(dev, true);
-       flush_work(&dev->reset_work);
        nvme_dev_remove_admin(dev);
        nvme_free_queues(dev, 0);
        nvme_release_cmb(dev);