From: Julia Lawall <julia.lawall@lip6.fr>
To: Arushi Singhal <arushisinghal19971997@gmail.com>
Cc: daniel.vetter@intel.com, Gustavo Padovan <gustavo@padovan.org>,
Sean Paul <seanpaul@chromium.org>,
David Airlie <airlied@linux.ie>, Ben Skeggs <bskeggs@redhat.com>,
dri-devel@lists.freedesktop.org,
LKML <linux-kernel@vger.kernel.org>,
nouveau@lists.freedesktop.org,
outreachy-kernel <outreachy-kernel@googlegroups.com>
Subject: Re: [Outreachy kernel] [PATCH] gpu: drm: Use list_{next/prev}_entry instead of list_entry
Date: Mon, 26 Mar 2018 00:45:14 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.20.1803260044440.2488@hadrien> (raw)
In-Reply-To: <CA+XqjF9jHrOFL4LosK5GdbAgpmQRd9=08eNzvfzYxFaeXk972g@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 6134 bytes --]
On Sun, 25 Mar 2018, Arushi Singhal wrote:
>
>
> On Mon, Mar 19, 2018 at 12:44 PM, Julia Lawall <julia.lawall@lip6.fr> wrote:
>
>
> On Mon, 19 Mar 2018, Arushi Singhal wrote:
>
> > This patch replace list_entry with list_{next/prev}_entry as
> it makes
> > the code more clear to read.
> > Done using coccinelle:
> >
> > @@
> > expression e1;
> > identifier e3;
> > type t;
> > @@
> > (
> > - list_entry(e1->e3.next,t,e3)
> > + list_next_entry(e1,e3)
> > |
> > - list_entry(e1->e3.prev,t,e3)
> > + list_prev_entry(e1,e3)
> > )
>
> This looks like a rule that could be nice for the Linux kernel
> in general,
> because the code really is much simpler.
>
> I would suggest to write the rule in a more robust way, as
> follows:
>
> @@
> identifier e3;
> type t;
> t *e1;
> @@
>
> (
> - list_entry(e1->e3.next,t,e3)
> + list_next_entry(e1,e3)
> |
> - list_entry(e1->e3.prev,t,e3)
> + list_prev_entry(e1,e3)
> )
>
> @@
> expression e1;
> identifier e3;
> @@
>
> (
> - list_entry(e1->e3.next,typeof(*e1),e3)
> + list_next_entry(e1,e3)
> |
> - list_entry(e1->e3.prev,typeof(*e1),e3)
> + list_prev_entry(e1,e3)
>
> This checks that the type that is specified corresponds to the
> one on e1.
> It could actually be that the call is getting the first element
> of a list,
> from some different type, and coincidentally the two types have
> the same
> field name for the list element.
>
> Unfortunately, the second rule, with the typeof call, doesn't
> currently
> work in Coccinelle, because the semantic patch language doesn't
> actually
> support typeof, and thinks that it is a function call. I will
> fix this.
>
> To make a semantic patch for the kernel, you can try running
> spgen on the
> above file and answer the questions that it asks. You can find
> examples
> in the coccinelle/scripts directory. Just run
>
> spgen foo.cocci
>
> Then answer the questions. Then run
>
> spgen foo.cocci > foo_for_kernel.cocci
>
> The second run will use the results of the first run to print
> the semantic
> patch. Let me know if you have any questions. You can always
> adjust the
> semantic patch that is generated by hand afterwards if needed.
>
>
> Hi Julia,
>
> I tried spgen and found that second rule is still not working. It's not able
> to detect the second rule.
> Is it working for you?
If you get the latest version of Coccinelle from github, it shoudl be
working now.
julia
>
> Thanks,
> Arushi
>
>
> julia
>
>
> >
> > Signed-off-by: Arushi Singhal
> <arushisinghal19971997@gmail.com>
> > ---
> > drivers/gpu/drm/drm_lease.c | 2 +-
> > drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_lease.c
> b/drivers/gpu/drm/drm_lease.c
> > index 1402c0e..4dcfb5f 100644
> > --- a/drivers/gpu/drm/drm_lease.c
> > +++ b/drivers/gpu/drm/drm_lease.c
> > @@ -340,7 +340,7 @@ static void _drm_lease_revoke(struct
> drm_master *top)
> > break;
> >
> > /* Over */
> > - master =
> list_entry(master->lessee_list.next, struct drm_master,
> lessee_list);
> > + master = list_next_entry(master,
> lessee_list);
> > }
> > }
> > }
> > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
> b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
> > index e4c8d31..81c3567 100644
> > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
> > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
> > @@ -134,7 +134,7 @@ nvkm_cstate_find_best(struct nvkm_clk
> *clk, struct nvkm_pstate *pstate,
> > nvkm_volt_map(volt,
> volt->max2_id, clk->temp));
> >
> > for (cstate = start; &cstate->head != &pstate->list;
> > - cstate = list_entry(cstate->head.prev,
> typeof(*cstate), head)) {
> > + cstate = list_prev_entry(cstate, head)) {
> > if (nvkm_cstate_valid(clk, cstate, max_volt,
> clk->temp))
> > break;
> > }
> > --
> > 2.7.4
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "outreachy-kernel" group.
> > To unsubscribe from this group and stop receiving emails from it,
> send an email to outreachy-kernel+unsubscribe@googlegroups.com.
> > To post to this group, send email to
> outreachy-kernel@googlegroups.com.
> > To view this discussion on the web visithttps://groups.google.com/d/msgid/outreachy-kernel/20180319050530.GA25589%4
> 0seema-Inspiron-15-3567.
> > For more options, visit https://groups.google.com/d/optout.
> >
>
>
>
>
--
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/alpine.DEB.2.20.1803260044440.2488%40hadrien.
For more options, visit https://groups.google.com/d/optout.
next prev parent reply other threads:[~2018-03-25 22:45 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-19 5:05 Arushi Singhal
2018-03-19 7:14 ` Julia Lawall
2018-03-25 11:22 ` Arushi Singhal
2018-03-25 14:18 ` Arushi Singhal
2018-03-25 15:07 ` Julia Lawall
2018-03-25 22:45 ` Julia Lawall [this message]
2018-03-19 14:13 ` Daniel Vetter
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.20.1803260044440.2488@hadrien \
--to=julia.lawall@lip6.fr \
--cc=airlied@linux.ie \
--cc=arushisinghal19971997@gmail.com \
--cc=bskeggs@redhat.com \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavo@padovan.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=outreachy-kernel@googlegroups.com \
--cc=seanpaul@chromium.org \
/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®