From: Eric Blake <eblake@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
qemu-devel@nongnu.org
Cc: stefanha@redhat.com, codyprime@gmail.com, jan.kiszka@siemens.com,
berto@igalia.com, zhang.zhanghailiang@huawei.com,
qemu-block@nongnu.org, arikalo@wavecomp.com, pasic@linux.ibm.com,
hpoussin@reactos.org, anthony.perard@citrix.com,
samuel.thibault@ens-lyon.org, philmd@redhat.com,
green@moxielogic.com, lvivier@redhat.com, ehabkost@redhat.com,
xiechanglong.d@gmail.com, pl@kamp.de, dgilbert@redhat.com,
b.galvani@gmail.com, eric.auger@redhat.com,
alex.williamson@redhat.com, ronniesahlberg@gmail.com,
jsnow@redhat.com, rth@twiddle.net, kwolf@redhat.com,
andrew@aj.id.au, crwulff@gmail.com, sundeep.lkml@gmail.com,
michael@walle.cc, qemu-ppc@nongnu.org,
kbastian@mail.uni-paderborn.de, imammedo@redhat.com,
fam@euphon.net, peter.maydell@linaro.org,
sheepdog@lists.wpkg.org, david@redhat.com, palmer@sifive.com,
thuth@redhat.com, jcmvbkbc@gmail.com, den@openvz.org,
hare@suse.com, sstabellini@kernel.org, arei.gonglei@huawei.com,
namei.unix@gmail.com, atar4qemu@gmail.com, farman@linux.ibm.com,
amit@kernel.org, sw@weilnetz.de, groug@kaod.org,
qemu-s390x@nongnu.org, qemu-arm@nongnu.org,
peter.chubb@nicta.com.au, clg@kaod.org, shorne@gmail.com,
qemu-riscv@nongnu.org, cohuck@redhat.com, amarkovic@wavecomp.com,
aurelien@aurel32.net, pburton@wavecomp.com,
sagark@eecs.berkeley.edu, jasowang@redhat.com, kraxel@redhat.com,
edgar.iglesias@gmail.com, gxt@mprc.pku.edu.cn, ari@tuxera.com,
quintela@redhat.com, mdroth@linux.vnet.ibm.com,
lersek@redhat.com, borntraeger@de.ibm.com,
antonynpavlov@gmail.com, dillaman@redhat.com, joel@jms.id.au,
xen-devel@lists.xenproject.org, integration@gluster.org,
rjones@redhat.com, Andrew.Baumann@microsoft.com,
mreitz@redhat.com, walling@linux.ibm.com, mst@redhat.com,
mark.cave-ayland@ilande.co.uk, v.maffione@gmail.com,
marex@denx.de, armbru@redhat.com, marcandre.lureau@redhat.com,
alistair@alistair23.me, paul.durrant@citrix.com,
pavel.dovgaluk@ispras.ru, g.lettieri@iet.unipi.it,
rizzo@iet.unipi.it, david@gibson.dropbear.id.au,
akrowiak@linux.ibm.com, berrange@redhat.com,
xiaoguangrong.eric@gmail.com, pmorel@linux.ibm.com,
wencongyang2@huawei.com, jcd@tribudubois.net,
pbonzini@redhat.com, stefanb@linux.ibm.com
Subject: Re: [RFC v2 6/9] scripts: add coccinelle script to use auto propagated errp
Date: Mon, 23 Sep 2019 15:05:49 -0500 [thread overview]
Message-ID: <57e97ed0-b1a1-d209-fc23-cf41ec467157@redhat.com> (raw)
In-Reply-To: <20190923161231.22028-7-vsementsov@virtuozzo.com>
On 9/23/19 11:12 AM, Vladimir Sementsov-Ogievskiy wrote:
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> scripts/coccinelle/auto-propagated-errp.cocci | 82 +++++++++++++++++++
> 1 file changed, 82 insertions(+)
> create mode 100644 scripts/coccinelle/auto-propagated-errp.cocci
>
> diff --git a/scripts/coccinelle/auto-propagated-errp.cocci b/scripts/coccinelle/auto-propagated-errp.cocci
> new file mode 100644
> index 0000000000..1a3f006f0b
> --- /dev/null
> +++ b/scripts/coccinelle/auto-propagated-errp.cocci
> @@ -0,0 +1,82 @@
> +@@
> +identifier fn;
> +identifier local_err;
> +@@
> +
> + fn(..., Error **errp)
> + {
> ++ ERRP_FUNCTION_BEGIN();
> + }
This doesn't catch functions where Error **errp is not the last
parameter. Some examples (some of which may need independent tweaking
in their own right for being inconsistent, although we DO want errp to
appear before any 'format, ...' arguments):
block/ssh.c:sftp_error_setg(Error **errp, BDRVSSHState *s, const char
*fs, ...)
exec.c:static void ram_block_add(RAMBlock *new_block, Error **errp, bool
shared)
Does running this Coccinelle script 2 times in a row add a second
ERRP_FUNCTION_BEGIN() line? We want it to be idempotent (no changes on
a second run). (Admittedly, I did not actually test that yet). Also, I
don't know if this can be tweaked to avoid adding the line to a function
with an empty body, maybe:
fn(..., Error **errp, ...)
{
+ ERRP_FUNCTION_BEGIN();
...
}
to only add it to a function that already has a body (thanks to the ...)
- but I'm fuzzy enough on Coccinelle that I may be saying something
totally wrong.
> +
> +@rule1@
> +identifier fn;
> +identifier local_err;
> +@@
> +
> + fn(..., Error **errp)
> + {
> + <...
> +- Error *local_err = NULL;
> + ...>
> + }
> +
> +@@
> +identifier rule1.fn;
> +identifier rule1.local_err;
> +identifier out;
> +@@
> +
> + fn(...)
> + {
> + <...
> +- goto out;
> ++ return;
> + ...>
> +- out:
> +- error_propagate(errp, local_err);
> + }
> +
> +@@
> +identifier rule1.fn;
> +identifier rule1.local_err;
> +@@
> +
> + fn(...)
> + {
> + <...
> +(
> +- error_free(local_err);
> +- local_err = NULL;
> ++ error_free_errp(errp);
> +|
> +- error_free(local_err);
> ++ error_free_errp(errp);
> +|
> +- error_report_err(local_err);
> ++ error_report_errp(errp);
> +|
> +- warn_report_err(local_err);
> ++ warn_report_errp(errp);
> +|
> +- error_propagate(errp, local_err);
> +)
> + ...>
> + }
> +
> +@@
> +identifier rule1.fn;
> +identifier rule1.local_err;
> +@@
> +
> + fn(...)
> + {
> + <...
> +(
> +- &local_err
> ++ errp
> +|
> +- local_err
> ++ *errp
> +)
> + ...>
> + }
>
Overall, the script makes sense in my reading (but no idea if it
actually catches everything we want, or if it missed something). At any
rate, once patch 7 is split into more manageable chunks, we can
definitely spot-check results to make sure they all look reasonable.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
next prev parent reply other threads:[~2019-09-23 21:08 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-23 16:12 [RFC v2 0/9] error: auto propagated local_err Vladimir Sementsov-Ogievskiy
2019-09-23 16:12 ` [RFC v2 1/9] " Vladimir Sementsov-Ogievskiy
2019-09-23 19:58 ` Eric Blake
2019-09-23 16:12 ` [RFC v2 2/9] qapi/error: add (Error **errp) cleaning APIs Vladimir Sementsov-Ogievskiy
2019-09-23 18:39 ` Eric Blake
2019-09-23 16:12 ` [RFC v2 3/9] errp: rename errp to errp_in where it is IN-argument Vladimir Sementsov-Ogievskiy
2019-09-23 18:35 ` Eric Blake
2019-09-23 16:12 ` [RFC v2 4/9] hw/core/loader-fit: fix freeing errp in fit_load_fdt Vladimir Sementsov-Ogievskiy
2019-09-23 18:41 ` Eric Blake
2019-09-23 16:12 ` [RFC v2 5/9] net/net: fix local variable shadowing in net_client_init Vladimir Sementsov-Ogievskiy
2019-09-23 18:44 ` Eric Blake
2019-09-23 16:12 ` [RFC v2 6/9] scripts: add coccinelle script to use auto propagated errp Vladimir Sementsov-Ogievskiy
2019-09-23 20:05 ` Eric Blake [this message]
2019-09-23 21:29 ` Eric Blake
2019-09-24 10:35 ` Vladimir Sementsov-Ogievskiy
2019-09-23 16:12 ` [RFC v2 8/9] fix-compilation: empty goto Vladimir Sementsov-Ogievskiy
2019-09-23 16:12 ` [RFC v2 9/9] fix-compilation: includes Vladimir Sementsov-Ogievskiy
2019-09-23 19:47 ` [RFC v2 0/9] error: auto propagated local_err Eric Blake
2019-09-24 14:12 ` Vladimir Sementsov-Ogievskiy
2019-09-24 15:28 ` Eric Blake
2019-09-24 15:44 ` Vladimir Sementsov-Ogievskiy
2019-09-24 15:46 ` Vladimir Sementsov-Ogievskiy
2019-09-24 15:49 ` Vladimir Sementsov-Ogievskiy
2019-09-24 16:10 ` Vladimir Sementsov-Ogievskiy
[not found] ` <20190923161231.22028-8-vsementsov@virtuozzo.com>
2019-09-23 20:30 ` [RFC v2 7/9] Use auto-propagated errp Eric Blake
2019-09-24 7:54 ` Vladimir Sementsov-Ogievskiy
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=57e97ed0-b1a1-d209-fc23-cf41ec467157@redhat.com \
--to=eblake@redhat.com \
--cc=Andrew.Baumann@microsoft.com \
--cc=akrowiak@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=alistair@alistair23.me \
--cc=amarkovic@wavecomp.com \
--cc=amit@kernel.org \
--cc=andrew@aj.id.au \
--cc=anthony.perard@citrix.com \
--cc=antonynpavlov@gmail.com \
--cc=arei.gonglei@huawei.com \
--cc=ari@tuxera.com \
--cc=arikalo@wavecomp.com \
--cc=armbru@redhat.com \
--cc=atar4qemu@gmail.com \
--cc=aurelien@aurel32.net \
--cc=b.galvani@gmail.com \
--cc=berrange@redhat.com \
--cc=berto@igalia.com \
--cc=borntraeger@de.ibm.com \
--cc=clg@kaod.org \
--cc=codyprime@gmail.com \
--cc=cohuck@redhat.com \
--cc=crwulff@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=den@openvz.org \
--cc=dgilbert@redhat.com \
--cc=dillaman@redhat.com \
--cc=edgar.iglesias@gmail.com \
--cc=ehabkost@redhat.com \
--cc=eric.auger@redhat.com \
--cc=fam@euphon.net \
--cc=farman@linux.ibm.com \
--cc=g.lettieri@iet.unipi.it \
--cc=green@moxielogic.com \
--cc=groug@kaod.org \
--cc=gxt@mprc.pku.edu.cn \
--cc=hare@suse.com \
--cc=hpoussin@reactos.org \
--cc=imammedo@redhat.com \
--cc=integration@gluster.org \
--cc=jan.kiszka@siemens.com \
--cc=jasowang@redhat.com \
--cc=jcd@tribudubois.net \
--cc=jcmvbkbc@gmail.com \
--cc=joel@jms.id.au \
--cc=jsnow@redhat.com \
--cc=kbastian@mail.uni-paderborn.de \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=lersek@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marex@denx.de \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mdroth@linux.vnet.ibm.com \
--cc=michael@walle.cc \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=namei.unix@gmail.com \
--cc=palmer@sifive.com \
--cc=pasic@linux.ibm.com \
--cc=paul.durrant@citrix.com \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=pburton@wavecomp.com \
--cc=peter.chubb@nicta.com.au \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=pl@kamp.de \
--cc=pmorel@linux.ibm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=quintela@redhat.com \
--cc=rizzo@iet.unipi.it \
--cc=rjones@redhat.com \
--cc=ronniesahlberg@gmail.com \
--cc=rth@twiddle.net \
--cc=sagark@eecs.berkeley.edu \
--cc=samuel.thibault@ens-lyon.org \
--cc=sheepdog@lists.wpkg.org \
--cc=shorne@gmail.com \
--cc=sstabellini@kernel.org \
--cc=stefanb@linux.ibm.com \
--cc=stefanha@redhat.com \
--cc=sundeep.lkml@gmail.com \
--cc=sw@weilnetz.de \
--cc=thuth@redhat.com \
--cc=v.maffione@gmail.com \
--cc=vsementsov@virtuozzo.com \
--cc=walling@linux.ibm.com \
--cc=wencongyang2@huawei.com \
--cc=xen-devel@lists.xenproject.org \
--cc=xiaoguangrong.eric@gmail.com \
--cc=xiechanglong.d@gmail.com \
--cc=zhang.zhanghailiang@huawei.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;
as well as URLs for NNTP newsgroup(s).