[PATCH v3 25/79] staging: media: vde: use pm_runtime_resume_and_get()

Mauro Carvalho Chehab mchehab+huawei at kernel.org
Wed Apr 28 07:20:43 UTC 2021


Em Tue, 27 Apr 2021 14:47:01 +0300
Dmitry Osipenko <digetx at gmail.com> escreveu:

> 27.04.2021 13:26, Mauro Carvalho Chehab пишет:
> > @@ -1088,8 +1090,9 @@ static int tegra_vde_remove(struct platform_device *pdev)
> >  {
> >  	struct tegra_vde *vde = platform_get_drvdata(pdev);
> >  	struct device *dev = &pdev->dev;
> > +	int ret;
> >  
> > -	pm_runtime_get_sync(dev);
> > +	ret = pm_runtime_resume_and_get(dev);  
> 
> Should be cleaner to return error directly here, IMO.

I double-checked how drivers/base/platform.c deals with non-zero
returns at the .remove method:

	static int platform_remove(struct device *_dev)
	{
	        struct platform_driver *drv = to_platform_driver(_dev->driver);
	        struct platform_device *dev = to_platform_device(_dev);
	
	        if (drv->remove) {
	                int ret = drv->remove(dev);
	
	                if (ret)
	                        dev_warn(_dev, "remove callback returned a non-zero value. This will be ignored.\n");
	        }
	        dev_pm_domain_detach(_dev, true);
	
	        return 0;
	}

Basically, it will print a message but will ignore whatever happens
afterwards.

So, if the driver is changed to return an error there, it will leak
resources.

Thanks,
Mauro


More information about the devel mailing list