Re: [PATCH] Coccinelle: api: Add SmPL script “use_devm_platform_get_and_ioremap_resource.cocci”

From: Julia Lawall
Date: Mon Sep 07 2020 - 13:21:24 EST


> >>>> +@replacement depends on patch@
> >>>> +expression base, device1, device2, index, private, resource;
> >>>> +@@
> >>>> +(
> >>>> +-resource = platform_get_resource(device1, IORESOURCE_MEM, index);
> >>>> + base =
> >>>> +- devm_ioremap_resource
> >>>> ++ devm_platform_get_and_ioremap_resource
> >>>> + (
> >>>> +- &
> >>>> + device1
> >>>> +- ->dev
> >>>> + ,
> >>>> +- resource
> >>>> ++ index, &resource
> >>>> + );
> >>>> +|
> >>>> +-private->res = platform_get_resource(device1, IORESOURCE_MEM, index);
> >>>> + base =
> >>>> +- devm_ioremap_resource
> >>>> ++ devm_platform_get_and_ioremap_resource
> >>>> + (device2,
> >>>
> >>> It is very suspicious that in one case you change the first argument of
> >>> devm_platform_get_and_ioremap_resource and in one case you don't.
> >>
> >> I noticed a few special cases during my source code analysis approach.
> >
> > This is not a reasonable answer. Does the rule work correctly or not?
> > If it doesn't work correctly, it needs to be removed.
>
> Both source code change patterns from these branches of a SmPL disjunction
> work as I would expect it by the current Coccinelle software.
> Would you like to clarify any remaining related open issues?

In one case the first argument of devm_ioremap_resource has to be changed
to produce the first argument of devm_platform_get_and_ioremap_resource
and in the other case there is no such change. "work as I would expect"
is not a proper explanation of why this is correct. Maybe you can point
to some previous commits that have made the change in this way.

julia