[PATCH] drm/hisilicon: Use pcim_enable_device()

Daniel Vetter daniel at ffwll.ch
Mon Dec 21 22:02:40 UTC 2020


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 at 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 at ffwll.ch>

Cheers, Daniel

>  
> -- 
> 2.7.4
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list