* [PATCH v1] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
@ 2022-11-07 11:47 Uwe Kleine-König
2022-11-07 12:45 ` Julia Lawall
[not found] ` <bd13da2d-6d18-4f33-0987-a193e3c9b761@web.de>
0 siblings, 2 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-07 11:47 UTC (permalink / raw)
To: Julia Lawall, Nicolas Palix; +Cc: linux-kernel, cocci, kernel
devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
the shorter devm_platform_ioremap_resource(pdev, index).
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
Hello,
a potential improvement is to check for invocations of
devm_platform_get_and_ioremap_resource() where the res parameter isn't
used afterwards, but my coccinelle foo isn't strong enough for that.
Best regards
Uwe
.../api/devm_platform_ioremap_resource.cocci | 44 +++++++++++++++++++
1 file changed, 44 insertions(+)
create mode 100644 scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
diff --git a/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
new file mode 100644
index 000000000000..401610b9a17d
--- /dev/null
+++ b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/// Don't use devm_platform_get_and_ioremap_resource with NULL as third parameter
+// Confidence: High
+
+virtual patch
+virtual context
+virtual org
+virtual report
+
+@r1@
+position p;
+@@
+ devm_platform_ioremap_resource(...) {
+ ...
+ devm_platform_get_and_ioremap_resource@p(...)
+ ...
+ }
+
+@depends on patch@
+expression pdev,index;
+position p != r1.p;
+@@
+
+- devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
++ devm_platform_ioremap_resource(pdev, index)
+
+@r2 depends on !patch exists@
+expression pdev,index;
+position p;
+@@
+
+* devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
+
+@script:python depends on org@
+p << r2.p;
+@@
+
+cocci.print_main("WARNING opportunity for devm_platform_ioremap_resource", p)
+
+@script:python depends on report@
+p << r2.p;
+@@
+
+coccilib.report.print_report(p[0], "WARNING opportunity for devm_platform_ioremap_resource")
--
2.38.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v1] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-07 11:47 [PATCH v1] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL Uwe Kleine-König
@ 2022-11-07 12:45 ` Julia Lawall
2022-11-07 18:11 ` [PATCH v2] " Uwe Kleine-König
[not found] ` <bd13da2d-6d18-4f33-0987-a193e3c9b761@web.de>
1 sibling, 1 reply; 8+ messages in thread
From: Julia Lawall @ 2022-11-07 12:45 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Julia Lawall, Nicolas Palix, linux-kernel, cocci, kernel
[-- Attachment #1: Type: text/plain, Size: 2111 bytes --]
On Mon, 7 Nov 2022, Uwe Kleine-König wrote:
> devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
> the shorter devm_platform_ioremap_resource(pdev, index).
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> Hello,
>
> a potential improvement is to check for invocations of
> devm_platform_get_and_ioremap_resource() where the res parameter isn't
> used afterwards, but my coccinelle foo isn't strong enough for that.
... when != res
I'm not sure where you wanted to put it though.
julia
>
> Best regards
> Uwe
>
> .../api/devm_platform_ioremap_resource.cocci | 44 +++++++++++++++++++
> 1 file changed, 44 insertions(+)
> create mode 100644 scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
>
> diff --git a/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
> new file mode 100644
> index 000000000000..401610b9a17d
> --- /dev/null
> +++ b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
> @@ -0,0 +1,44 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/// Don't use devm_platform_get_and_ioremap_resource with NULL as third parameter
> +// Confidence: High
> +
> +virtual patch
> +virtual context
> +virtual org
> +virtual report
> +
> +@r1@
> +position p;
> +@@
> + devm_platform_ioremap_resource(...) {
> + ...
> + devm_platform_get_and_ioremap_resource@p(...)
> + ...
> + }
> +
> +@depends on patch@
> +expression pdev,index;
> +position p != r1.p;
> +@@
> +
> +- devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
> ++ devm_platform_ioremap_resource(pdev, index)
> +
> +@r2 depends on !patch exists@
> +expression pdev,index;
> +position p;
> +@@
> +
> +* devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
> +
> +@script:python depends on org@
> +p << r2.p;
> +@@
> +
> +cocci.print_main("WARNING opportunity for devm_platform_ioremap_resource", p)
> +
> +@script:python depends on report@
> +p << r2.p;
> +@@
> +
> +coccilib.report.print_report(p[0], "WARNING opportunity for devm_platform_ioremap_resource")
> --
> 2.38.1
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-07 12:45 ` Julia Lawall
@ 2022-11-07 18:11 ` Uwe Kleine-König
2022-11-10 15:07 ` Uwe Kleine-König
0 siblings, 1 reply; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-07 18:11 UTC (permalink / raw)
To: Julia Lawall; +Cc: kernel, Nicolas Palix, linux-kernel, cocci
[-- Attachment #1: Type: text/plain, Size: 3637 bytes --]
devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
the shorter devm_platform_ioremap_resource(pdev, index).
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
On Mon, Nov 07, 2022 at 08:45:38PM +0800, Julia Lawall wrote:
> On Mon, 7 Nov 2022, Uwe Kleine-König wrote:
>
> > devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
> > the shorter devm_platform_ioremap_resource(pdev, index).
> >
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > ---
> > Hello,
> >
> > a potential improvement is to check for invocations of
> > devm_platform_get_and_ioremap_resource() where the res parameter isn't
> > used afterwards, but my coccinelle foo isn't strong enough for that.
>
> ... when != res
>
> I'm not sure where you wanted to put it though.
I tinkered a bit further and even succeeded to remove the declaration if
it's otherwise unused.
I failed to test the report mode, my spatch tells me some error about
python2?!
Best regards
Uwe
.../api/devm_platform_ioremap_resource.cocci | 85 +++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
diff --git a/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
new file mode 100644
index 000000000000..485dfa6ea0aa
--- /dev/null
+++ b/scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/// Don't use devm_platform_get_and_ioremap_resource with NULL as third parameter
+// Confidence: High
+
+virtual patch
+virtual context
+virtual org
+virtual report
+
+@r1@
+position p;
+@@
+ devm_platform_ioremap_resource(...) {
+ ...
+ devm_platform_get_and_ioremap_resource@p(...)
+ ...
+ }
+
+@depends on patch@
+expression pdev,index;
+position p != r1.p;
+@@
+
+- devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
++ devm_platform_ioremap_resource(pdev, index)
+
+@depends on patch@
+expression pdev,index;
+identifier res;
+type T;
+@@
+- T res;
+ ... when != res
+- devm_platform_get_and_ioremap_resource(pdev, index, &res)
++ devm_platform_ioremap_resource(pdev, index)
+ ... when != res
+
+@depends on patch@
+expression pdev,index;
+identifier res;
+@@
+
+- devm_platform_get_and_ioremap_resource(pdev, index, &res)
++ devm_platform_ioremap_resource(pdev, index)
+ ... when != res
+
+@r2 depends on !patch exists@
+expression pdev,index;
+position p;
+@@
+
+* devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
+
+@script:python depends on org@
+p << r2.p;
+@@
+
+cocci.print_main("WARNING opportunity for devm_platform_ioremap_resource", p)
+
+@script:python depends on report@
+p << r2.p;
+@@
+
+coccilib.report.print_report(p[0], "WARNING opportunity for devm_platform_ioremap_resource")
+
+@r3 depends on !patch exists@
+expression pdev,index;
+identifier res;
+position p;
+@@
+
+* devm_platform_get_and_ioremap_resource@p(pdev, index, &res)
+ ... when != res
+
+@script:python depends on org@
+p << r3.p;
+@@
+
+cocci.print_main("WARNING opportunity for devm_platform_ioremap_resource", p)
+
+@script:python depends on report@
+p << r3.p;
+@@
+
+coccilib.report.print_report(p[0], "WARNING opportunity for devm_platform_ioremap_resource")
--
2.38.1
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [cocci] [PATCH] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
[not found] ` <bd13da2d-6d18-4f33-0987-a193e3c9b761@web.de>
@ 2022-11-07 20:08 ` Uwe Kleine-König
2022-11-08 5:51 ` Julia Lawall
0 siblings, 1 reply; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-07 20:08 UTC (permalink / raw)
To: Markus Elfring
Cc: cocci, Julia Lawall, kernel-janitors, Nicolas Palix,
linux-kernel, kernel
[-- Attachment #1: Type: text/plain, Size: 3678 bytes --]
On Mon, Nov 07, 2022 at 08:00:33PM +0100, Markus Elfring wrote:
>
> > devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
> > the shorter devm_platform_ioremap_resource(pdev, index).
> …
> > create mode 100644 scripts/coccinelle/api/devm_platform_ioremap_resource.cocci
> …
> > +@depends on patch@
> > +expression pdev,index;
> > +position p != r1.p;
>
>
> Why do you think that different source code positions would be required for
> your transformation approach?
That is important that the implementation of
devm_platform_ioremap_resource isn't adapted.
> > +@@
> > +
> > +- devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
> > ++ devm_platform_ioremap_resource(pdev, index)
>
> I suggest to use the following SmPL code variant instead.
>
> -devm_platform_get_and_ioremap_resource@p
> +devm_platform_ioremap_resource
> (pdev, index
> - , NULL
> )
I don't care much, but IMHO my variant is easier to read. Might be
subjective, though.
> > +@r2 depends on !patch exists@
> > +expression pdev,index;
> > +position p;
> > +@@
> > +
> > +* devm_platform_get_and_ioremap_resource@p(pdev, index, NULL)
>
>
> I doubt that the usage of the SmPL asterisk is appropriate for the operation
> modes “org” and “report”.
I have no idea about org and report modes. When I try these I get a
python2 error message:
uwe@taurus:~/gsrc/linux$ make coccicheck
You have not explicitly specified the mode to use. Using default "report" mode.
Available modes are the following: patch, report, context, org, chain
You can specify the mode with "make coccicheck MODE=<mode>"
Note however that some modes are not implemented by some semantic patches.
Please check for false positives in the output before submitting a patch.
When using "patch" mode, carefully review the patch before submitting it.
/usr/bin/spatch -D report --no-show-diff --very-quiet --cocci-file ./scripts/coccinelle/api/alloc/alloc_cast.cocci --no-includes --include-headers --dir . -I ./arch/x86/include -I ./arch/x86/include/generated -I ./include -I ./arch/x86/include/uapi -I ./arch/x86/include/generated/uapi -I ./include/uapi -I ./include/generated/uapi --include ./include/linux/compiler-version.h --include ./include/linux/kconfig.h --jobs 4 --chunksize 1
Py.find_library: unable to find the Python library [libpython2.7m.so returned libpython2.7m.so: cannot open shared object file: No such file or directory] [/usr/bin/../lib/libpython2.7m.so returned /usr/bin/../lib/libpython2.7m.so: cannot open shared object file: No such file or directory] [libpython2.7.so returned libpython2.7.so: cannot open shared object file: No such file or directory] [/usr/bin/../lib/libpython2.7.so returned /usr/bin/../lib/libpython2.7.so: cannot open shared object file: No such file or directory]
coccicheck failed
make: *** [Makefile:2076: coccicheck] Error 255
After uninstalling python2 this ends in:
Cannot find Python library
coccicheck failed
make: *** [Makefile:2076: coccicheck] Error 255
Didn't try to debug that any further. Is that worth a bug report against
coccinelle (which is shipped by my distribution)?
I tried to adapt the org and report modes from other patches in the same
directory. So a critical glimpse by someone more knowledgable than me is
recommended. However I don't know how to react to "I doubt ... is
appropriate", I'd need a more constructive feedback to act on.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [cocci] [PATCH] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-07 20:08 ` [cocci] [PATCH] " Uwe Kleine-König
@ 2022-11-08 5:51 ` Julia Lawall
2022-11-08 7:55 ` Nicolas Palix
0 siblings, 1 reply; 8+ messages in thread
From: Julia Lawall @ 2022-11-08 5:51 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Markus Elfring, cocci, kernel-janitors, nicolas palix,
linux-kernel, kernel
> After uninstalling python2 this ends in:
>
> Cannot find Python library
> coccicheck failed
> make: *** [Makefile:2076: coccicheck] Error 255
>
> Didn't try to debug that any further. Is that worth a bug report against
> coccinelle (which is shipped by my distribution)?
>
> I tried to adapt the org and report modes from other patches in the same
> directory. So a critical glimpse by someone more knowledgable than me is
> recommended. However I don't know how to react to "I doubt ... is
> appropriate", I'd need a more constructive feedback to act on.
I'm not a python expert, so I'm not sure what to do about this python2 vs python3 problem. Is there some strategy for printing that works in both of them?
julia
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [cocci] [PATCH] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-08 5:51 ` Julia Lawall
@ 2022-11-08 7:55 ` Nicolas Palix
2022-11-08 9:54 ` Uwe Kleine-König
0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Palix @ 2022-11-08 7:55 UTC (permalink / raw)
To: Julia Lawall, Uwe Kleine-König
Cc: Markus Elfring, cocci, kernel-janitors, nicolas palix,
linux-kernel, kernel
Hi all,
On 08/11/2022 06:51, Julia Lawall wrote:
>
>> After uninstalling python2 this ends in:
>>
>> Cannot find Python library
>> coccicheck failed
>> make: *** [Makefile:2076: coccicheck] Error 255
>>
>> Didn't try to debug that any further. Is that worth a bug report against
>> coccinelle (which is shipped by my distribution)?
>>
>> I tried to adapt the org and report modes from other patches in the same
>> directory. So a critical glimpse by someone more knowledgable than me is
>> recommended. However I don't know how to react to "I doubt ... is
>> appropriate", I'd need a more constructive feedback to act on.
>
> I'm not a python expert, so I'm not sure what to do about this python2 vs python3 problem. Is there some strategy for printing that works in both of them?
It sounds like a missing dependency in the package system of the
distribution. Coccinelle has been build with Python support, but
some libraries are missing.
Which distribution is it ?
Can you install some packages that provide the two missing shared
librairies ?
>
> julia
--
Nicolas Palix
+33 4 574 21538
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [cocci] [PATCH] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-08 7:55 ` Nicolas Palix
@ 2022-11-08 9:54 ` Uwe Kleine-König
0 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-08 9:54 UTC (permalink / raw)
To: Nicolas Palix
Cc: Julia Lawall, nicolas palix, kernel-janitors, linux-kernel,
Markus Elfring, kernel, cocci
[-- Attachment #1: Type: text/plain, Size: 1520 bytes --]
Hello,
On Tue, Nov 08, 2022 at 08:55:04AM +0100, Nicolas Palix wrote:
> On 08/11/2022 06:51, Julia Lawall wrote:
> >
> > > After uninstalling python2 this ends in:
> > >
> > > Cannot find Python library
> > > coccicheck failed
> > > make: *** [Makefile:2076: coccicheck] Error 255
> > >
> > > Didn't try to debug that any further. Is that worth a bug report against
> > > coccinelle (which is shipped by my distribution)?
> > >
> > > I tried to adapt the org and report modes from other patches in the same
> > > directory. So a critical glimpse by someone more knowledgable than me is
> > > recommended. However I don't know how to react to "I doubt ... is
> > > appropriate", I'd need a more constructive feedback to act on.
> >
> > I'm not a python expert, so I'm not sure what to do about this python2 vs python3 problem. Is there some strategy for printing that works in both of them?
>
> It sounds like a missing dependency in the package system of the
> distribution. Coccinelle has been build with Python support, but
> some libraries are missing.
>
> Which distribution is it ?
> Can you install some packages that provide the two missing shared librairies
> ?
After installing python-is-python3 (which provides a symlink
/usr/bin/python -> python3) it works. This is on Debian testing.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL
2022-11-07 18:11 ` [PATCH v2] " Uwe Kleine-König
@ 2022-11-10 15:07 ` Uwe Kleine-König
0 siblings, 0 replies; 8+ messages in thread
From: Uwe Kleine-König @ 2022-11-10 15:07 UTC (permalink / raw)
To: Julia Lawall; +Cc: Nicolas Palix, linux-kernel, kernel, cocci
[-- Attachment #1: Type: text/plain, Size: 1459 bytes --]
Hello,
On Mon, Nov 07, 2022 at 07:11:35PM +0100, Uwe Kleine-König wrote:
> devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
> the shorter devm_platform_ioremap_resource(pdev, index).
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> On Mon, Nov 07, 2022 at 08:45:38PM +0800, Julia Lawall wrote:
> > On Mon, 7 Nov 2022, Uwe Kleine-König wrote:
> >
> > > devm_platform_get_and_ioremap_resource(pdev, index, NULL) is equivalent to
> > > the shorter devm_platform_ioremap_resource(pdev, index).
> > >
> > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > > ---
> > > Hello,
> > >
> > > a potential improvement is to check for invocations of
> > > devm_platform_get_and_ioremap_resource() where the res parameter isn't
> > > used afterwards, but my coccinelle foo isn't strong enough for that.
> >
> > ... when != res
> >
> > I'm not sure where you wanted to put it though.
>
> I tinkered a bit further and even succeeded to remove the declaration if
> it's otherwise unused.
>
> I failed to test the report mode, my spatch tells me some error about
> python2?!
For the record, that is a problem with Debian's coccinelle, bugreport
at https://bugs.debian.org/1023653
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-11-10 15:07 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-07 11:47 [PATCH v1] coccinelle: api: Don't use devm_platform_get_and_ioremap_resource with res==NULL Uwe Kleine-König
2022-11-07 12:45 ` Julia Lawall
2022-11-07 18:11 ` [PATCH v2] " Uwe Kleine-König
2022-11-10 15:07 ` Uwe Kleine-König
[not found] ` <bd13da2d-6d18-4f33-0987-a193e3c9b761@web.de>
2022-11-07 20:08 ` [cocci] [PATCH] " Uwe Kleine-König
2022-11-08 5:51 ` Julia Lawall
2022-11-08 7:55 ` Nicolas Palix
2022-11-08 9:54 ` Uwe Kleine-König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).