From: Julia Lawall <julia.lawall@inria.fr>
To: Markus Elfring <Markus.Elfring@web.de>
Cc: Coccinelle <cocci@systeme.lip6.fr>,
Dejin Zheng <zhengdejin5@gmail.com>,
Denis Efremov <efremov@linux.com>,
Gilles Muller <Gilles.Muller@lip6.fr>,
Masahiro Yamada <masahiroy@kernel.org>,
Michal Marek <michal.lkml@markovi.net>,
Nicolas Palix <nicolas.palix@imag.fr>,
kernel-janitors@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Coccinelle: api: Add SmPL script “use_devm_platform_get_and_ioremap_resource.cocci”
Date: Mon, 7 Sep 2020 15:11:31 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.22.394.2009071506350.2476@hadrien> (raw)
In-Reply-To: <477abcea-e008-e509-d03f-f2753ebdfb20@web.de>
[-- Attachment #1: Type: text/plain, Size: 3570 bytes --]
On Mon, 7 Sep 2020, Markus Elfring wrote:
> >> +@display depends on context@
> >> +expression base, device1, device2, index, private, resource;
> >> +@@
> >> +(
> >> +*resource = platform_get_resource(device1, IORESOURCE_MEM, index);
> >> + base =
> >> +* devm_ioremap_resource
> >> + (&device1->dev, resource);
> >
> > Why do you require these statements to be next to each other?
>
> I would appreciate indications for a general change acceptance
> also according to such a simple transformation approach.
> I imagine that it will become more challenging to tolerate extra
> source code between these function calls (by the specification
> of special SmPL filters).
>
>
> >> +|
> >> +*private->res = platform_get_resource(device1, IORESOURCE_MEM, index);
> >> + base =
> >> +* devm_ioremap_resource
> >> + (device2, private->res);
> >
> > Why do you have this special case?
>
> The usage of the data structure member “res” triggers corresponding
> software design consequences.
I don't think this is a reliable rule. You included two examples below.
They involve structures of different types. It seems unlikely that there
is a guarantee that the res field of all structures is used in the same
way. Furthermore, this is the context case. What is the purpose of
making the distinction? The user will have to figure out what to do by
hand in any case.
> The expressions which are passed as the first function call parameters
> can be different.
>
>
> >> +@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.
> > If you don't know how to make the change in some cases, it would be better
> > to do nothing at all.
>
> How do you think about to take another look at any update candidates?
>
> Examples:
> * mvebu_sei_probe
> https://elixir.bootlin.com/linux/v5.9-rc4/source/drivers/irqchip/irq-mvebu-sei.c#L368
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/irqchip/irq-mvebu-sei.c?id=f4d51dffc6c01a9e94650d95ce0104964f8ae822#n368
I don't see any purpose to providing two links for everything.
julia
>
> * hi655x_pmic_probe
> https://elixir.bootlin.com/linux/v5.9-rc4/source/drivers/mfd/hi655x-pmic.c#L92
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/mfd/hi655x-pmic.c?id=f4d51dffc6c01a9e94650d95ce0104964f8ae822#n92
>
> Regards,
> Markus
>
next prev parent reply other threads:[~2020-09-07 13:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <25b804fd-0d04-475d-f614-26c03c9fd544@web.de>
[not found] ` <5f9fdd59-4b0b-1cb5-c3a2-92efc5bb3841@web.de>
2020-09-07 12:00 ` [Cocci] " Julia Lawall
[not found] ` <477abcea-e008-e509-d03f-f2753ebdfb20@web.de>
2020-09-07 13:11 ` Julia Lawall [this message]
[not found] ` <46d314d5-822e-3d73-2d70-015794556e56@web.de>
2020-09-07 13:46 ` Julia Lawall
[not found] ` <8aaa799f-0ec4-cfd0-854a-e1006d0d200a@web.de>
2020-09-07 14:18 ` Julia Lawall
[not found] ` <4b505afc-ae48-d8eb-f4e1-8e3f7192f73d@web.de>
2020-09-07 17:03 ` [Cocci] [PATCH v2] " Julia Lawall
[not found] ` <8fb7782c-538b-b657-af13-da71124e6afa@web.de>
2020-09-07 17:31 ` Julia Lawall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.22.394.2009071506350.2476@hadrien \
--to=julia.lawall@inria.fr \
--cc=Gilles.Muller@lip6.fr \
--cc=Markus.Elfring@web.de \
--cc=cocci@systeme.lip6.fr \
--cc=efremov@linux.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
--cc=nicolas.palix@imag.fr \
--cc=zhengdejin5@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®