On Mon, Dec 21, 2020 at 08:45:22AM +0800, Tian Tao wrote:
Using the managed function simplifies the error handling. After unloading the driver, the PCI device should now get disabled as well.
Signed-off-by: Tian Tao tiantao6@hisilicon.com
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c index 02f3bd1..7159018 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -329,7 +329,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev, dev->pdev = pdev; pci_set_drvdata(pdev, dev);
- ret = pci_enable_device(pdev);
- ret = pcim_enable_device(pdev); if (ret) { drm_err(dev, "failed to enable pci device: %d\n", ret); goto err_free;
@@ -338,7 +338,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev, ret = hibmc_load(dev); if (ret) { drm_err(dev, "failed to load hibmc: %d\n", ret);
goto err_disable;
goto err_free;
}
ret = drm_dev_register(dev, 0);
@@ -354,8 +354,6 @@ static int hibmc_pci_probe(struct pci_dev *pdev,
err_unload: hibmc_unload(dev); -err_disable:
- pci_disable_device(pdev);
err_free: drm_dev_put(dev);
The drm_dev_put here and in hibmc_pci_remove is wrong, devm_drm_dev_alloc takes care of that already. I'm kinda suprised you don't have a refcount underrun already - do you test module unload with KASAN enabled?
The pcim patch looks ok, so Reviewed-by: Daniel Vetter daniel.vetter@ffwll.ch
Cheers, Daniel
-- 2.7.4