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@xxxxxxxxxxxxx> > --- > 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@xxxxxxxx> Cheers, Daniel > > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel