Hello, Comments inline On Thu, Jul 25, 2019 at 10:55 AM Chuhong Yuan <hslester96@xxxxxxxxx> 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@xxxxxxxxx> > --- > 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 >