Message ID | 20190725085458.21838-1-hslester96@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | counter/ftm-quaddec: Use device-managed registration API | expand |
Hello, Comments inline On Thu, Jul 25, 2019 at 10:55 AM Chuhong Yuan <hslester96@gmail.com> wrote: > > Make use of devm_counter_register. > Then we can remove redundant unregistration API > usage to make code simpler. > > Signed-off-by: Chuhong Yuan <hslester96@gmail.com> > --- > drivers/counter/ftm-quaddec.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c > index 68a9b7393457..bccbca8681b6 100644 > --- a/drivers/counter/ftm-quaddec.c > +++ b/drivers/counter/ftm-quaddec.c > @@ -317,7 +317,7 @@ static int ftm_quaddec_probe(struct platform_device *pdev) > > ftm_quaddec_init(ftm); > > - ret = counter_register(&ftm->counter); > + ret = devm_counter_register(&pdev->dev, &ftm->counter); > if (ret) > ftm_quaddec_disable(ftm); > > @@ -328,8 +328,6 @@ static int ftm_quaddec_remove(struct platform_device *pdev) > { > struct ftm_quaddec *ftm = platform_get_drvdata(pdev); > > - counter_unregister(&ftm->counter); > - The orders of (de)initialization should be kept symmetrical. In this case, now that counter_unregister() will be called via devm, it will be executed after ftm_quaddec_remove() This introduces a race condition where the ftm-quaddec is disabled but the counter entry itself is not. Somebody else (William?) should confirm this. > ftm_quaddec_disable(ftm); > > return 0; > -- > 2.20.1 >
diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c index 68a9b7393457..bccbca8681b6 100644 --- a/drivers/counter/ftm-quaddec.c +++ b/drivers/counter/ftm-quaddec.c @@ -317,7 +317,7 @@ static int ftm_quaddec_probe(struct platform_device *pdev) ftm_quaddec_init(ftm); - ret = counter_register(&ftm->counter); + ret = devm_counter_register(&pdev->dev, &ftm->counter); if (ret) ftm_quaddec_disable(ftm); @@ -328,8 +328,6 @@ static int ftm_quaddec_remove(struct platform_device *pdev) { struct ftm_quaddec *ftm = platform_get_drvdata(pdev); - counter_unregister(&ftm->counter); - ftm_quaddec_disable(ftm); return 0;
Make use of devm_counter_register. Then we can remove redundant unregistration API usage to make code simpler. Signed-off-by: Chuhong Yuan <hslester96@gmail.com> --- drivers/counter/ftm-quaddec.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)