Commit 18178e03 authored by Peng Wu's avatar Peng Wu Committed by Miquel Raynal
Browse files

mtd: rawnand: cafe: fix drivers probe/remove methods



Driver should call pci_disable_device() if it returns from
cafe_nand_probe() with error.

Meanwhile, the driver calls pci_enable_device() in
cafe_nand_probe(), but never calls pci_disable_device()
during removal.

Signed-off-by: default avatarPeng Wu <wupeng58@huawei.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20220520084425.116686-1-wupeng58@huawei.com
parent f2906aa8
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -679,8 +679,10 @@ static int cafe_nand_probe(struct pci_dev *pdev,
	pci_set_master(pdev);

	cafe = kzalloc(sizeof(*cafe), GFP_KERNEL);
	if (!cafe)
		return  -ENOMEM;
	if (!cafe) {
		err = -ENOMEM;
		goto out_disable_device;
	}

	mtd = nand_to_mtd(&cafe->nand);
	mtd->dev.parent = &pdev->dev;
@@ -801,6 +803,8 @@ static int cafe_nand_probe(struct pci_dev *pdev,
	pci_iounmap(pdev, cafe->mmio);
 out_free_mtd:
	kfree(cafe);
 out_disable_device:
	pci_disable_device(pdev);
 out:
	return err;
}
@@ -822,6 +826,7 @@ static void cafe_nand_remove(struct pci_dev *pdev)
	pci_iounmap(pdev, cafe->mmio);
	dma_free_coherent(&cafe->pdev->dev, 2112, cafe->dmabuf, cafe->dmaaddr);
	kfree(cafe);
	pci_disable_device(pdev);
}

static const struct pci_device_id cafe_nand_tbl[] = {