On Wed, Jul 26, 2023 at 12:00:40PM +0800, Yangtao Li wrote: > Returning an error code in a platform driver's remove function is wrong > most of the time and there is an effort to make the callback return > void. To prepare this rework the function not to exit early. > > Cc: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > Signed-off-by: Yangtao Li <frank.li@xxxxxxxx> > --- > drivers/mmc/host/sdhci_am654.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c > index 7cdf0f54e3a5..abe83736d396 100644 > --- a/drivers/mmc/host/sdhci_am654.c > +++ b/drivers/mmc/host/sdhci_am654.c > @@ -873,8 +873,7 @@ static int sdhci_am654_remove(struct platform_device *pdev) > int ret; > > ret = pm_runtime_resume_and_get(&pdev->dev); > - if (ret < 0) > - return ret; > + WARN_ON(ret < 0); You must use pm_runtime_get_sync() instead of pm_runtime_resume_and_get() here because in the error case pm_runtime_resume_and_get() already calls pm_runtime_put_noidle() which is repeated here in this driver. Also WARN_ON is a pretty big hammer, I'd go with a dev_err() instead. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature