[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary l
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables |
Date: |
Mon, 13 Jun 2016 16:40:34 -0300 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Mon, Jun 13, 2016 at 10:01:16AM -0600, Eric Blake wrote:
> On 06/13/2016 09:52 AM, Eduardo Habkost wrote:
[...]
> >
> > See, e.g.:
> >
> > void qmp_guest_suspend_disk(Error **errp)
> > {
> > Error *local_err = NULL;
> > GuestSuspendMode *mode = g_new(GuestSuspendMode, 1);
> >
> > *mode = GUEST_SUSPEND_MODE_DISK;
> > check_suspend_mode(*mode, &local_err);
> > acquire_privilege(SE_SHUTDOWN_NAME, &local_err);
> > execute_async(do_suspend, mode, &local_err);
>
> That usage is a bug. A Coccinelle script to root out such buggy
> instances would be nice.
I've tried to write one, but got lots of false positives due to
error-checking using the function return value, not local_err.
For reference, this is the script I have used:
@@
typedef Error;
identifier F1 !~ "hmp_handle_error|error_free_or_abort";
identifier F2 !~ "hmp_handle_error|error_free_or_abort";
idexpression Error *ERR;
@@
-F1(..., &ERR)
+FIXME_incorrect_error_usage1()
... when != ERR
-F2(..., &ERR)
+FIXME_incorrect_error_usage2()
@@
identifier F1 !~ "hmp_handle_error|error_free_or_abort";
identifier F2 !~ "hmp_handle_error|error_free_or_abort";
idexpression Error **ERRP;
@@
-F1(..., ERRP)
+FIXME_incorrect_error_usage1()
... when != ERRP
-F2(..., ERRP)
+FIXME_incorrect_error_usage2()
--
Eduardo
- [Qemu-block] [PATCH v2 2/3] error: Remove unnecessary local_err variables, (continued)
- [Qemu-block] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Eduardo Habkost, 2016/06/10
- Re: [Qemu-block] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Eric Blake, 2016/06/10
- Re: [Qemu-block] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Cornelia Huck, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Markus Armbruster, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Eduardo Habkost, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Eric Blake, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Markus Armbruster, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Eduardo Habkost, 2016/06/13
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables, Markus Armbruster, 2016/06/14
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/3] error: Remove unnecessary local_err variables,
Eduardo Habkost <=
[Qemu-block] [RFC v2 3/3] Remove unnecessary variables for function return value, Eduardo Habkost, 2016/06/10
[Qemu-block] [PATCH v2 1/3] error: Remove NULL checks on error_propagate() calls, Eduardo Habkost, 2016/06/10