diff mbox

Use error_is_set() only when necessary

Message ID 1391090848-2115-1-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster Jan. 30, 2014, 2:07 p.m. UTC
error_is_set(&var) is the same as var != NULL, but it takes
whole-program analysis to figure that out.  Unnecessarily hard for
optimizers, static checkers, and human readers.  Dumb it down to
obvious.

Gets rid of several dozen Coverity false positives.

Note that the obvious form is already used in many places.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 block.c                            | 16 +++++++--------
 block/blkdebug.c                   |  4 ++--
 block/blkverify.c                  |  2 +-
 block/curl.c                       |  2 +-
 block/gluster.c                    |  2 +-
 block/iscsi.c                      |  2 +-
 block/nbd.c                        |  2 +-
 block/qapi.c                       |  4 ++--
 block/qcow2.c                      |  6 +++---
 block/raw-posix.c                  | 12 +++++------
 block/raw-win32.c                  |  4 ++--
 block/raw_bsd.c                    |  2 +-
 block/rbd.c                        |  2 +-
 block/sheepdog.c                   |  2 +-
 block/snapshot.c                   |  2 +-
 block/vvfat.c                      |  2 +-
 blockdev.c                         | 42 +++++++++++++++++++-------------------
 blockjob.c                         |  4 ++--
 hmp.c                              |  8 ++++----
 hw/pci/pci-hotplug-old.c           |  4 ++--
 hw/usb/dev-network.c               |  2 +-
 net/net.c                          | 12 +++++------
 qdev-monitor.c                     |  2 +-
 qemu-char.c                        |  6 +++---
 qemu-img.c                         |  8 ++++----
 qga/commands-posix.c               | 18 ++++++++--------
 qga/commands-win32.c               |  2 +-
 savevm.c                           |  4 ++--
 tests/test-qmp-input-strict.c      | 16 +++++++--------
 tests/test-qmp-input-visitor.c     | 20 +++++++++---------
 tests/test-qmp-output-visitor.c    | 22 ++++++++++----------
 tests/test-string-input-visitor.c  | 20 +++++++++---------
 tests/test-string-output-visitor.c | 14 ++++++-------
 tpm.c                              |  2 +-
 util/qemu-config.c                 | 16 +++++++--------
 util/qemu-option.c                 | 22 ++++++++++----------
 vl.c                               |  2 +-
 37 files changed, 156 insertions(+), 156 deletions(-)

Comments

Eric Blake Jan. 30, 2014, 3:45 p.m. UTC | #1
On 01/30/2014 07:07 AM, Markus Armbruster wrote:
> error_is_set(&var) is the same as var != NULL, but it takes
> whole-program analysis to figure that out.  Unnecessarily hard for
> optimizers, static checkers, and human readers.  Dumb it down to
> obvious.
> 
> Gets rid of several dozen Coverity false positives.
> 
> Note that the obvious form is already used in many places.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---

>  37 files changed, 156 insertions(+), 156 deletions(-)

Good diffstat - shows it should be fairly mechanical.

> @@ -1399,7 +1399,7 @@ fail:
>      QDECREF(bs->options);
>      QDECREF(options);
>      bs->options = NULL;
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;

Is it worth a further cleanup on instances like this?  That is,
error_propagate(errp, NULL) is a safe no-op, so we can avoid the 'if
(local_err)' conditional.  But that should not be in this patch (keep
the mechanical changes easy).

> +++ b/block/snapshot.c
> @@ -345,7 +345,7 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
>          ret = bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err);
>      }
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }

Another example that can be simplified.

> +++ b/tests/test-qmp-input-strict.c
> @@ -92,7 +92,7 @@ static void test_validate_struct(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo' }");
>  
>      visit_type_TestStruct(v, &p, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);

This (and other places in test files) chould use
visit_type_TestStruct(v, &p, NULL, &error_abort) and ditch local errp.
But that's a separate patch as well.

Reviewed-by: Eric Blake <eblake@redhat.com>
Markus Armbruster Jan. 30, 2014, 4:02 p.m. UTC | #2
Eric Blake <eblake@redhat.com> writes:

> On 01/30/2014 07:07 AM, Markus Armbruster wrote:
>> error_is_set(&var) is the same as var != NULL, but it takes
>> whole-program analysis to figure that out.  Unnecessarily hard for
>> optimizers, static checkers, and human readers.  Dumb it down to
>> obvious.
>> 
>> Gets rid of several dozen Coverity false positives.
>> 
>> Note that the obvious form is already used in many places.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>
>>  37 files changed, 156 insertions(+), 156 deletions(-)
>
> Good diffstat - shows it should be fairly mechanical.
>
>> @@ -1399,7 +1399,7 @@ fail:
>>      QDECREF(bs->options);
>>      QDECREF(options);
>>      bs->options = NULL;
>> -    if (error_is_set(&local_err)) {
>> +    if (local_err) {
>>          error_propagate(errp, local_err);
>>      }
>>      return ret;
>
> Is it worth a further cleanup on instances like this?  That is,
> error_propagate(errp, NULL) is a safe no-op, so we can avoid the 'if
> (local_err)' conditional.  But that should not be in this patch (keep
> the mechanical changes easy).

I like your suggestion, and I agree it should be a separate patch.

>> +++ b/block/snapshot.c
>> @@ -345,7 +345,7 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
>>          ret = bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err);
>>      }
>>  
>> -    if (error_is_set(&local_err)) {
>> +    if (local_err) {
>>          error_propagate(errp, local_err);
>>      }
>
> Another example that can be simplified.
>
>> +++ b/tests/test-qmp-input-strict.c
>> @@ -92,7 +92,7 @@ static void test_validate_struct(TestInputVisitorData *data,
>>      v = validate_test_init(data, "{ 'integer': -42, 'boolean':
>> true, 'string': 'foo' }");
>>  
>>      visit_type_TestStruct(v, &p, NULL, &errp);
>> -    g_assert(!error_is_set(&errp));
>> +    g_assert(!errp);
>
> This (and other places in test files) chould use
> visit_type_TestStruct(v, &p, NULL, &error_abort) and ditch local errp.
> But that's a separate patch as well.
>
> Reviewed-by: Eric Blake <eblake@redhat.com>

I like this one, too.  Thanks!
Andreas Färber Jan. 30, 2014, 5:14 p.m. UTC | #3
Am 30.01.2014 15:07, schrieb Markus Armbruster:
> error_is_set(&var) is the same as var != NULL, but it takes
> whole-program analysis to figure that out.  Unnecessarily hard for
> optimizers, static checkers, and human readers.  Dumb it down to
> obvious.
> 
> Gets rid of several dozen Coverity false positives.
> 
> Note that the obvious form is already used in many places.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Reviewed-by: Andreas Färber <afaerber@suse.de>

I don't suppose you used a Coccinelle script that we could re-run in the
future? ;)

Via QMP queue?

Thanks,
Andreas
Markus Armbruster Jan. 31, 2014, 7:42 a.m. UTC | #4
Andreas Färber <afaerber@suse.de> writes:

> Am 30.01.2014 15:07, schrieb Markus Armbruster:
>> error_is_set(&var) is the same as var != NULL, but it takes
>> whole-program analysis to figure that out.  Unnecessarily hard for
>> optimizers, static checkers, and human readers.  Dumb it down to
>> obvious.
>> 
>> Gets rid of several dozen Coverity false positives.
>> 
>> Note that the obvious form is already used in many places.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
> Reviewed-by: Andreas Färber <afaerber@suse.de>

Thanks!

> I don't suppose you used a Coccinelle script that we could re-run in the
> future? ;)

Perhaps I should've, but since the job was simple enough for
M-x tags-query-replace...

> Via QMP queue?

Yes, please.
Luiz Capitulino Feb. 10, 2014, 8:54 p.m. UTC | #5
On Thu, 30 Jan 2014 15:07:28 +0100
Markus Armbruster <armbru@redhat.com> wrote:

> error_is_set(&var) is the same as var != NULL, but it takes
> whole-program analysis to figure that out.  Unnecessarily hard for
> optimizers, static checkers, and human readers.  Dumb it down to
> obvious.
> 
> Gets rid of several dozen Coverity false positives.
> 
> Note that the obvious form is already used in many places.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Applied to the qmp branch, one comment below.

> ---
>  block.c                            | 16 +++++++--------
>  block/blkdebug.c                   |  4 ++--
>  block/blkverify.c                  |  2 +-
>  block/curl.c                       |  2 +-
>  block/gluster.c                    |  2 +-
>  block/iscsi.c                      |  2 +-
>  block/nbd.c                        |  2 +-
>  block/qapi.c                       |  4 ++--
>  block/qcow2.c                      |  6 +++---
>  block/raw-posix.c                  | 12 +++++------
>  block/raw-win32.c                  |  4 ++--
>  block/raw_bsd.c                    |  2 +-
>  block/rbd.c                        |  2 +-
>  block/sheepdog.c                   |  2 +-
>  block/snapshot.c                   |  2 +-
>  block/vvfat.c                      |  2 +-
>  blockdev.c                         | 42 +++++++++++++++++++-------------------
>  blockjob.c                         |  4 ++--
>  hmp.c                              |  8 ++++----
>  hw/pci/pci-hotplug-old.c           |  4 ++--
>  hw/usb/dev-network.c               |  2 +-
>  net/net.c                          | 12 +++++------
>  qdev-monitor.c                     |  2 +-
>  qemu-char.c                        |  6 +++---
>  qemu-img.c                         |  8 ++++----
>  qga/commands-posix.c               | 18 ++++++++--------
>  qga/commands-win32.c               |  2 +-
>  savevm.c                           |  4 ++--
>  tests/test-qmp-input-strict.c      | 16 +++++++--------
>  tests/test-qmp-input-visitor.c     | 20 +++++++++---------
>  tests/test-qmp-output-visitor.c    | 22 ++++++++++----------
>  tests/test-string-input-visitor.c  | 20 +++++++++---------
>  tests/test-string-output-visitor.c | 14 ++++++-------
>  tpm.c                              |  2 +-
>  util/qemu-config.c                 | 16 +++++++--------
>  util/qemu-option.c                 | 22 ++++++++++----------
>  vl.c                               |  2 +-
>  37 files changed, 156 insertions(+), 156 deletions(-)
> 
> diff --git a/block.c b/block.c
> index cb21a5f..aa0588f 100644
> --- a/block.c
> +++ b/block.c
> @@ -421,7 +421,7 @@ static void coroutine_fn bdrv_create_co_entry(void *opaque)
>      assert(cco->drv);
>  
>      ret = cco->drv->bdrv_create(cco->filename, cco->options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(&cco->err, local_err);
>      }
>      cco->ret = ret;
> @@ -460,7 +460,7 @@ int bdrv_create(BlockDriver *drv, const char* filename,
>  
>      ret = cco.ret;
>      if (ret < 0) {
> -        if (error_is_set(&cco.err)) {
> +        if (cco.err) {
>              error_propagate(errp, cco.err);
>          } else {
>              error_setg_errno(errp, -ret, "Could not create image");
> @@ -486,7 +486,7 @@ int bdrv_create_file(const char* filename, QEMUOptionParameter *options,
>      }
>  
>      ret = bdrv_create(drv, filename, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> @@ -903,7 +903,7 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file,
>      }
>  
>      if (ret < 0) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>          } else if (bs->filename[0]) {
>              error_setg_errno(errp, -ret, "Could not open '%s'", bs->filename);
> @@ -1025,7 +1025,7 @@ int bdrv_file_open(BlockDriverState **pbs, const char *filename,
>      /* Parse the filename and open it */
>      if (drv->bdrv_parse_filename && filename) {
>          drv->bdrv_parse_filename(filename, options, &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              ret = -EINVAL;
>              goto fail;
> @@ -1399,7 +1399,7 @@ fail:
>      QDECREF(bs->options);
>      QDECREF(options);
>      bs->options = NULL;
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> @@ -1407,7 +1407,7 @@ fail:
>  close_and_fail:
>      bdrv_close(bs);
>      QDECREF(options);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> @@ -5335,7 +5335,7 @@ out:
>      free_option_parameters(create_options);
>      free_option_parameters(param);
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>  }
> diff --git a/block/blkdebug.c b/block/blkdebug.c
> index 56c4cd0..bbbdd80 100644
> --- a/block/blkdebug.c
> +++ b/block/blkdebug.c
> @@ -303,7 +303,7 @@ static int read_config(BDRVBlkdebugState *s, const char *filename,
>      }
>  
>      qemu_config_parse_qdict(options, config_groups, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> @@ -393,7 +393,7 @@ static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> diff --git a/block/blkverify.c b/block/blkverify.c
> index cfcbcf4..1563c88 100644
> --- a/block/blkverify.c
> +++ b/block/blkverify.c
> @@ -128,7 +128,7 @@ static int blkverify_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> diff --git a/block/curl.c b/block/curl.c
> index a807584..bb1fc4a 100644
> --- a/block/curl.c
> +++ b/block/curl.c
> @@ -463,7 +463,7 @@ static int curl_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          goto out_noclean;
> diff --git a/block/gluster.c b/block/gluster.c
> index a009b15..58eab07 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -282,7 +282,7 @@ static int qemu_gluster_open(BlockDriverState *bs,  QDict *options,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          ret = -EINVAL;
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 6f4af72..835c66b 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -1123,7 +1123,7 @@ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          ret = -EINVAL;
> diff --git a/block/nbd.c b/block/nbd.c
> index 327e913..abae506 100644
> --- a/block/nbd.c
> +++ b/block/nbd.c
> @@ -209,7 +209,7 @@ static int nbd_config(BDRVNBDState *s, QDict *options, char **export)
>                                        &error_abort);
>  
>      qemu_opts_absorb_qdict(s->socket_opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -EINVAL;
> diff --git a/block/qapi.c b/block/qapi.c
> index 8f4134b..8f2b4db 100644
> --- a/block/qapi.c
> +++ b/block/qapi.c
> @@ -271,7 +271,7 @@ void bdrv_query_info(BlockDriverState *bs,
>          p_image_info = &info->inserted->image;
>          while (1) {
>              bdrv_query_image_info(bs0, p_image_info, &local_err);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_propagate(errp, local_err);
>                  goto err;
>              }
> @@ -336,7 +336,7 @@ BlockInfoList *qmp_query_block(Error **errp)
>       while ((bs = bdrv_next(bs))) {
>          BlockInfoList *info = g_malloc0(sizeof(*info));
>          bdrv_query_info(bs, &info->value, &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              goto err;
>          }
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 2da62b8..04069cd 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -671,7 +671,7 @@ static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
>      /* Enable lazy_refcounts according to image and command line options */
>      opts = qemu_opts_create(&qcow2_runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> @@ -1603,7 +1603,7 @@ static int qcow2_create2(const char *filename, int64_t total_size,
>      ret = bdrv_open(bs, filename, NULL,
>                      BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_NO_BACKING,
>                      drv, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          goto out;
>      }
> @@ -1683,7 +1683,7 @@ static int qcow2_create(const char *filename, QEMUOptionParameter *options,
>  
>      ret = qcow2_create2(filename, sectors, backing_file, backing_fmt, flags,
>                          cluster_size, prealloc, options, version, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> diff --git a/block/raw-posix.c b/block/raw-posix.c
> index 126a634..161ea14 100644
> --- a/block/raw-posix.c
> +++ b/block/raw-posix.c
> @@ -361,7 +361,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options,
>  
>      opts = qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> @@ -448,7 +448,7 @@ static int raw_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      s->type = FTYPE_FILE;
>      ret = raw_open_common(bs, options, flags, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> @@ -1597,7 +1597,7 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      ret = raw_open_common(bs, options, flags, 0, &local_err);
>      if (ret < 0) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>          }
>          return ret;
> @@ -1832,7 +1832,7 @@ static int floppy_open(BlockDriverState *bs, QDict *options, int flags,
>      /* open will not fail even if no floppy is inserted, so add O_NONBLOCK */
>      ret = raw_open_common(bs, options, flags, O_NONBLOCK, &local_err);
>      if (ret) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>          }
>          return ret;
> @@ -1961,7 +1961,7 @@ static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      /* open will not fail even if no CD is inserted, so add O_NONBLOCK */
>      ret = raw_open_common(bs, options, flags, O_NONBLOCK, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> @@ -2078,7 +2078,7 @@ static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      ret = raw_open_common(bs, options, flags, 0, &local_err);
>      if (ret) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>          }
>          return ret;
> diff --git a/block/raw-win32.c b/block/raw-win32.c
> index beb7f23..ae1c8e6 100644
> --- a/block/raw-win32.c
> +++ b/block/raw-win32.c
> @@ -279,7 +279,7 @@ static int raw_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto fail;
> @@ -594,7 +594,7 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
>      QemuOpts *opts = qemu_opts_create(&raw_runtime_opts, NULL, 0,
>                                        &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          ret = -EINVAL;
>          goto done;
> diff --git a/block/raw_bsd.c b/block/raw_bsd.c
> index 978ae7a..2e95208 100644
> --- a/block/raw_bsd.c
> +++ b/block/raw_bsd.c
> @@ -140,7 +140,7 @@ static int raw_create(const char *filename, QEMUOptionParameter *options,
>      int ret;
>  
>      ret = bdrv_create_file(filename, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>      return ret;
> diff --git a/block/rbd.c b/block/rbd.c
> index 121fae2..dbc79f4 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -440,7 +440,7 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          qemu_opts_del(opts);
> diff --git a/block/sheepdog.c b/block/sheepdog.c
> index 672b9c9..e6c0376 100644
> --- a/block/sheepdog.c
> +++ b/block/sheepdog.c
> @@ -1385,7 +1385,7 @@ static int sd_open(BlockDriverState *bs, QDict *options, int flags,
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          ret = -EINVAL;
> diff --git a/block/snapshot.c b/block/snapshot.c
> index 9047f8d..85c52ff 100644
> --- a/block/snapshot.c
> +++ b/block/snapshot.c
> @@ -345,7 +345,7 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
>          ret = bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err);
>      }
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>      }
>  
> diff --git a/block/vvfat.c b/block/vvfat.c
> index 664941c..a19e4ca 100644
> --- a/block/vvfat.c
> +++ b/block/vvfat.c
> @@ -1085,7 +1085,7 @@ DLOG(if (stderr == NULL) {
>  
>      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>      qemu_opts_absorb_qdict(opts, options, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          ret = -EINVAL;
> diff --git a/blockdev.c b/blockdev.c
> index 36ceece..be05a58 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -331,13 +331,13 @@ static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
>       * stay in bs_opts for processing by bdrv_open(). */
>      id = qdict_get_try_str(bs_opts, "id");
>      opts = qemu_opts_create(&qemu_common_drive_opts, id, 1, &error);
> -    if (error_is_set(&error)) {
> +    if (error) {
>          error_propagate(errp, error);
>          return NULL;
>      }
>  
>      qemu_opts_absorb_qdict(opts, bs_opts, &error);
> -    if (error_is_set(&error)) {
> +    if (error) {
>          error_propagate(errp, error);
>          goto early_err;
>      }
> @@ -443,7 +443,7 @@ static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
>          }
>  
>          on_write_error = parse_block_error_action(buf, 0, &error);
> -        if (error_is_set(&error)) {
> +        if (error) {
>              error_propagate(errp, error);
>              goto early_err;
>          }
> @@ -457,7 +457,7 @@ static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
>          }
>  
>          on_read_error = parse_block_error_action(buf, 1, &error);
> -        if (error_is_set(&error)) {
> +        if (error) {
>              error_propagate(errp, error);
>              goto early_err;
>          }
> @@ -688,7 +688,7 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
>      legacy_opts = qemu_opts_create(&qemu_legacy_drive_opts, NULL, 0,
>                                     &error_abort);
>      qemu_opts_absorb_qdict(legacy_opts, bs_opts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          goto fail;
> @@ -875,13 +875,13 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
>      /* Actual block device init: Functionality shared with blockdev-add */
>      dinfo = blockdev_init(filename, bs_opts, type, &local_err);
>      if (dinfo == NULL) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              qerror_report_err(local_err);
>              error_free(local_err);
>          }
>          goto fail;
>      } else {
> -        assert(!error_is_set(&local_err));
> +        assert(!local_err);
>      }

Not related to this patch, but this else clause is checking if
dinfo != NULL and local_err != NULL, right? Shouldn't it be moved
into blockdev_init() instead?

>  
>      /* Set legacy DriveInfo fields */
> @@ -1017,7 +1017,7 @@ SnapshotInfo *qmp_blockdev_snapshot_delete_internal_sync(const char *device,
>      }
>  
>      ret = bdrv_snapshot_find_by_id_and_name(bs, id, name, &sn, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return NULL;
>      }
> @@ -1030,7 +1030,7 @@ SnapshotInfo *qmp_blockdev_snapshot_delete_internal_sync(const char *device,
>      }
>  
>      bdrv_snapshot_delete(bs, id, name, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return NULL;
>      }
> @@ -1244,7 +1244,7 @@ static void external_snapshot_prepare(BlkTransactionState *common,
>      state->old_bs = bdrv_lookup_bs(has_device ? device : NULL,
>                                     has_node_name ? node_name : NULL,
>                                     &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -1289,7 +1289,7 @@ static void external_snapshot_prepare(BlkTransactionState *common,
>                          state->old_bs->filename,
>                          state->old_bs->drv->format_name,
>                          NULL, -1, flags, &local_err, false);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              return;
>          }
> @@ -1360,7 +1360,7 @@ static void drive_backup_prepare(BlkTransactionState *common, Error **errp)
>                       backup->has_on_source_error, backup->on_source_error,
>                       backup->has_on_target_error, backup->on_target_error,
>                       &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          state->bs = NULL;
>          state->job = NULL;
> @@ -1452,7 +1452,7 @@ void qmp_transaction(TransactionActionList *dev_list, Error **errp)
>          QSIMPLEQ_INSERT_TAIL(&snap_bdrv_states, state, entry);
>  
>          state->ops->prepare(state, &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              goto delete_and_fail;
>          }
> @@ -1533,7 +1533,7 @@ void qmp_block_passwd(bool has_device, const char *device,
>      bs = bdrv_lookup_bs(has_device ? device : NULL,
>                          has_node_name ? node_name : NULL,
>                          &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -1598,7 +1598,7 @@ void qmp_change_blockdev(const char *device, const char *filename,
>      }
>  
>      eject_device(bs, 0, &err);
> -    if (error_is_set(&err)) {
> +    if (err) {
>          error_propagate(errp, err);
>          return;
>      }
> @@ -1735,7 +1735,7 @@ void qmp_block_resize(bool has_device, const char *device,
>      bs = bdrv_lookup_bs(has_device ? device : NULL,
>                          has_node_name ? node_name : NULL,
>                          &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -1828,7 +1828,7 @@ void qmp_block_stream(const char *device, bool has_base,
>  
>      stream_start(bs, base_bs, base, has_speed ? speed : 0,
>                   on_error, block_job_cb, bs, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -1986,7 +1986,7 @@ void qmp_drive_backup(const char *device, const char *target,
>          }
>      }
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -2127,7 +2127,7 @@ void qmp_drive_mirror(const char *device, const char *target,
>          }
>      }
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -2266,7 +2266,7 @@ void qmp_blockdev_add(BlockdevOptions *options, Error **errp)
>  
>      visit_type_BlockdevOptions(qmp_output_get_visitor(ov),
>                                 &options, NULL, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          goto fail;
>      }
> @@ -2277,7 +2277,7 @@ void qmp_blockdev_add(BlockdevOptions *options, Error **errp)
>      qdict_flatten(qdict);
>  
>      blockdev_init(NULL, qdict, IF_NONE, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          goto fail;
>      }
> diff --git a/blockjob.c b/blockjob.c
> index 9e5fd5c..b3ce14c 100644
> --- a/blockjob.c
> +++ b/blockjob.c
> @@ -61,7 +61,7 @@ void *block_job_create(const BlockJobDriver *driver, BlockDriverState *bs,
>          Error *local_err = NULL;
>  
>          block_job_set_speed(job, speed, &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              bs->job = NULL;
>              g_free(job);
>              bdrv_set_in_use(bs, 0);
> @@ -92,7 +92,7 @@ void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp)
>          return;
>      }
>      job->driver->set_speed(job, speed, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> diff --git a/hmp.c b/hmp.c
> index 1af0809..5a24ac1 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -881,7 +881,7 @@ void hmp_balloon(Monitor *mon, const QDict *qdict)
>      Error *errp = NULL;
>  
>      qmp_balloon(value, &errp);
> -    if (error_is_set(&errp)) {
> +    if (errp) {
>          monitor_printf(mon, "balloon: %s\n", error_get_pretty(errp));
>          error_free(errp);
>      }
> @@ -1118,7 +1118,7 @@ void hmp_change(Monitor *mon, const QDict *qdict)
>      }
>  
>      qmp_change(device, target, !!arg, arg, &err);
> -    if (error_is_set(&err) &&
> +    if (err &&
>          error_get_class(err) == ERROR_CLASS_DEVICE_ENCRYPTED) {
>          error_free(err);
>          monitor_read_block_device_key(mon, device, NULL, NULL);
> @@ -1335,12 +1335,12 @@ void hmp_netdev_add(Monitor *mon, const QDict *qdict)
>      QemuOpts *opts;
>  
>      opts = qemu_opts_from_qdict(qemu_find_opts("netdev"), qdict, &err);
> -    if (error_is_set(&err)) {
> +    if (err) {
>          goto out;
>      }
>  
>      netdev_add(opts, &err);
> -    if (error_is_set(&err)) {
> +    if (err) {
>          qemu_opts_del(opts);
>      }
>  
> diff --git a/hw/pci/pci-hotplug-old.c b/hw/pci/pci-hotplug-old.c
> index 8dbc3c1..cf2caeb 100644
> --- a/hw/pci/pci-hotplug-old.c
> +++ b/hw/pci/pci-hotplug-old.c
> @@ -90,7 +90,7 @@ static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
>      qemu_opt_set(opts, "type", "nic");
>  
>      ret = net_client_init(opts, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return NULL;
> @@ -322,7 +322,7 @@ static int pci_device_hot_remove(Monitor *mon, const char *pci_addr)
>      }
>  
>      qdev_unplug(&d->qdev, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          monitor_printf(mon, "%s\n", error_get_pretty(local_err));
>          error_free(local_err);
>          return -1;
> diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
> index 4c532b7..f0c2536 100644
> --- a/hw/usb/dev-network.c
> +++ b/hw/usb/dev-network.c
> @@ -1391,7 +1391,7 @@ static USBDevice *usb_net_init(USBBus *bus, const char *cmdline)
>      qemu_opt_set(opts, "model", "usb");
>  
>      idx = net_client_init(opts, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return NULL;
> diff --git a/net/net.c b/net/net.c
> index f8db85f..2587b80 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -885,7 +885,7 @@ void net_host_device_add(Monitor *mon, const QDict *qdict)
>      qemu_opt_set(opts, "type", device);
>  
>      net_client_init(opts, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          monitor_printf(mon, "adding host network device %s failed\n", device);
> @@ -921,17 +921,17 @@ int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret)
>      QemuOpts *opts;
>  
>      opts_list = qemu_find_opts_err("netdev", &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          goto exit_err;
>      }
>  
>      opts = qemu_opts_from_qdict(opts_list, qdict, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          goto exit_err;
>      }
>  
>      netdev_add(opts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qemu_opts_del(opts);
>          goto exit_err;
>      }
> @@ -1155,7 +1155,7 @@ static int net_init_client(QemuOpts *opts, void *dummy)
>      Error *local_err = NULL;
>  
>      net_client_init(opts, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> @@ -1170,7 +1170,7 @@ static int net_init_netdev(QemuOpts *opts, void *dummy)
>      int ret;
>  
>      ret = net_client_init(opts, 1, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> diff --git a/qdev-monitor.c b/qdev-monitor.c
> index 1d3b68d..2d1ef8d 100644
> --- a/qdev-monitor.c
> +++ b/qdev-monitor.c
> @@ -656,7 +656,7 @@ int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
>      DeviceState *dev;
>  
>      opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> diff --git a/qemu-char.c b/qemu-char.c
> index 30c5a6a..d0b4ac5 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -2725,7 +2725,7 @@ static CharDriverState *qemu_chr_open_socket(QemuOpts *opts)
>  
>      chr = qemu_chr_open_socket_fd(fd, do_nodelay, is_listen, is_telnet,
>                                    is_waitconnect, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          goto fail;
>      }
>      return chr;
> @@ -2938,7 +2938,7 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
>      Error *local_err = NULL;
>  
>      opts = qemu_opts_create(qemu_find_opts("chardev"), label, 1, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return NULL;
> @@ -3323,7 +3323,7 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in
>          return NULL;
>  
>      chr = qemu_chr_new_from_opts(opts, init, &err);
> -    if (error_is_set(&err)) {
> +    if (err) {
>          error_report("%s", error_get_pretty(err));
>          error_free(err);
>      }
> diff --git a/qemu-img.c b/qemu-img.c
> index c989850..0927b09 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -419,7 +419,7 @@ static int img_create(int argc, char **argv)
>  
>      bdrv_img_create(filename, fmt, base_filename, base_fmt,
>                      options, img_size, BDRV_O_FLAGS, &local_err, quiet);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_report("%s: %s", filename, error_get_pretty(local_err));
>          error_free(local_err);
>          return 1;
> @@ -1289,7 +1289,7 @@ static int img_convert(int argc, char **argv)
>  
>          bdrv_snapshot_load_tmp_by_id_or_name(bs[0], snapshot_name, &local_err);
>      }
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_report("Failed to load snapshot: %s",
>                       error_get_pretty(local_err));
>          error_free(local_err);
> @@ -1775,7 +1775,7 @@ static ImageInfoList *collect_image_info_list(const char *filename,
>          }
>  
>          bdrv_query_image_info(bs, &info, &err);
> -        if (error_is_set(&err)) {
> +        if (err) {
>              error_report("%s", error_get_pretty(err));
>              error_free(err);
>              goto err;
> @@ -2184,7 +2184,7 @@ static int img_snapshot(int argc, char **argv)
>  
>      case SNAPSHOT_DELETE:
>          bdrv_snapshot_delete_by_id_or_name(bs, snapshot_name, &err);
> -        if (error_is_set(&err)) {
> +        if (err) {
>              error_report("Could not delete snapshot '%s': (%s)",
>                           snapshot_name, error_get_pretty(err));
>              error_free(err);
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index 8100bee..cae4171 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -108,7 +108,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err)
>      }
>  
>      ga_wait_child(pid, &status, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return;
>      }
> @@ -181,7 +181,7 @@ void qmp_guest_set_time(int64_t time_ns, Error **errp)
>      }
>  
>      ga_wait_child(pid, &status, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return;
>      }
> @@ -669,7 +669,7 @@ static void execute_fsfreeze_hook(FsfreezeHookArg arg, Error **err)
>      }
>  
>      ga_wait_child(pid, &status, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return;
>      }
> @@ -713,14 +713,14 @@ int64_t qmp_guest_fsfreeze_freeze(Error **err)
>      slog("guest-fsfreeze called");
>  
>      execute_fsfreeze_hook(FSFREEZE_HOOK_FREEZE, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return -1;
>      }
>  
>      QTAILQ_INIT(&mounts);
>      build_fs_mount_list(&mounts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return -1;
>      }
> @@ -780,7 +780,7 @@ int64_t qmp_guest_fsfreeze_thaw(Error **err)
>  
>      QTAILQ_INIT(&mounts);
>      build_fs_mount_list(&mounts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return 0;
>      }
> @@ -861,7 +861,7 @@ void qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **err)
>  
>      QTAILQ_INIT(&mounts);
>      build_fs_mount_list(&mounts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          return;
>      }
> @@ -957,7 +957,7 @@ static void bios_supports_mode(const char *pmutils_bin, const char *pmutils_arg,
>      }
>  
>      ga_wait_child(pid, &status, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          goto out;
>      }
> @@ -1034,7 +1034,7 @@ static void guest_suspend(const char *pmutils_bin, const char *sysfile_str,
>      }
>  
>      ga_wait_child(pid, &status, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(err, local_err);
>          goto out;
>      }
> diff --git a/qga/commands-win32.c b/qga/commands-win32.c
> index a6a0af2..50094dd 100644
> --- a/qga/commands-win32.c
> +++ b/qga/commands-win32.c
> @@ -197,7 +197,7 @@ int64_t qmp_guest_fsfreeze_freeze(Error **err)
>  
>  error:
>      qmp_guest_fsfreeze_thaw(&local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          g_debug("cleanup thaw: %s", error_get_pretty(local_err));
>          error_free(local_err);
>      }
> diff --git a/savevm.c b/savevm.c
> index a7dbe18..7329fc5 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -880,7 +880,7 @@ static int del_existing_snapshots(Monitor *mon, const char *name)
>          if (bdrv_can_snapshot(bs) &&
>              bdrv_snapshot_find(bs, snapshot, name) >= 0) {
>              bdrv_snapshot_delete_by_id_or_name(bs, name, &err);
> -            if (error_is_set(&err)) {
> +            if (err) {
>                  monitor_printf(mon,
>                                 "Error while deleting snapshot on device '%s':"
>                                 " %s\n",
> @@ -1115,7 +1115,7 @@ void do_delvm(Monitor *mon, const QDict *qdict)
>      while ((bs1 = bdrv_next(bs1))) {
>          if (bdrv_can_snapshot(bs1)) {
>              bdrv_snapshot_delete_by_id_or_name(bs, name, &err);
> -            if (error_is_set(&err)) {
> +            if (err) {
>                  monitor_printf(mon,
>                                 "Error while deleting snapshot on device '%s':"
>                                 " %s\n",
> diff --git a/tests/test-qmp-input-strict.c b/tests/test-qmp-input-strict.c
> index 6f68963..38bdf5e 100644
> --- a/tests/test-qmp-input-strict.c
> +++ b/tests/test-qmp-input-strict.c
> @@ -92,7 +92,7 @@ static void test_validate_struct(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo' }");
>  
>      visit_type_TestStruct(v, &p, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_free(p->string);
>      g_free(p);
>  }
> @@ -107,7 +107,7 @@ static void test_validate_struct_nested(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string' }, 'string2': 'string2'}}}");
>  
>      visit_type_UserDefNested(v, &udp, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      qapi_free_UserDefNested(udp);
>  }
>  
> @@ -121,7 +121,7 @@ static void test_validate_list(TestInputVisitorData *data,
>      v = validate_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44 } ]");
>  
>      visit_type_UserDefOneList(v, &head, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      qapi_free_UserDefOneList(head);
>  }
>  
> @@ -135,7 +135,7 @@ static void test_validate_union(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'type': 'b', 'data' : { 'integer': 42 } }");
>  
>      visit_type_UserDefUnion(v, &tmp, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      qapi_free_UserDefUnion(tmp);
>  }
>  
> @@ -149,7 +149,7 @@ static void test_validate_fail_struct(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo', 'extra': 42 }");
>  
>      visit_type_TestStruct(v, &p, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      if (p) {
>          g_free(p->string);
>      }
> @@ -166,7 +166,7 @@ static void test_validate_fail_struct_nested(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string', 'extra': [42, 23, {'foo':'bar'}] }, 'string2': 'string2'}}}");
>  
>      visit_type_UserDefNested(v, &udp, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      qapi_free_UserDefNested(udp);
>  }
>  
> @@ -180,7 +180,7 @@ static void test_validate_fail_list(TestInputVisitorData *data,
>      v = validate_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44, 'extra': 'ggg' } ]");
>  
>      visit_type_UserDefOneList(v, &head, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      qapi_free_UserDefOneList(head);
>  }
>  
> @@ -194,7 +194,7 @@ static void test_validate_fail_union(TestInputVisitorData *data,
>      v = validate_test_init(data, "{ 'type': 'b', 'data' : { 'integer': 42 }, 'extra': 'yyy' }");
>  
>      visit_type_UserDefUnion(v, &tmp, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      qapi_free_UserDefUnion(tmp);
>  }
>  
> diff --git a/tests/test-qmp-input-visitor.c b/tests/test-qmp-input-visitor.c
> index 1e1c6fa..6eb7dc5 100644
> --- a/tests/test-qmp-input-visitor.c
> +++ b/tests/test-qmp-input-visitor.c
> @@ -96,7 +96,7 @@ static void test_visitor_in_int(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "%" PRId64, value);
>  
>      visit_type_int(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, value);
>  }
>  
> @@ -114,7 +114,7 @@ static void test_visitor_in_int_overflow(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "%f", DBL_MAX);
>  
>      visit_type_int(v, &res, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      error_free(errp);
>  }
>  
> @@ -128,7 +128,7 @@ static void test_visitor_in_bool(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "true");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, true);
>  }
>  
> @@ -142,7 +142,7 @@ static void test_visitor_in_number(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "%f", value);
>  
>      visit_type_number(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpfloat(res, ==, value);
>  }
>  
> @@ -156,7 +156,7 @@ static void test_visitor_in_string(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "%s", value);
>  
>      visit_type_str(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpstr(res, ==, value);
>  
>      g_free(res);
> @@ -175,7 +175,7 @@ static void test_visitor_in_enum(TestInputVisitorData *data,
>          v = visitor_input_test_init(data, "%s", EnumOne_lookup[i]);
>  
>          visit_type_EnumOne(v, &res, NULL, &errp);
> -        g_assert(!error_is_set(&errp));
> +        g_assert(!errp);
>          g_assert_cmpint(i, ==, res);
>  
>          visitor_input_teardown(data, NULL);
> @@ -223,7 +223,7 @@ static void test_visitor_in_struct(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo' }");
>  
>      visit_type_TestStruct(v, &p, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(p->integer, ==, -42);
>      g_assert(p->boolean == true);
>      g_assert_cmpstr(p->string, ==, "foo");
> @@ -248,7 +248,7 @@ static void test_visitor_in_struct_nested(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string' }, 'string2': 'string2'}}}");
>  
>      visit_type_UserDefNested(v, &udp, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>  
>      check_and_free_str(udp->string0, "string0");
>      check_and_free_str(udp->dict1.string1, "string1");
> @@ -272,7 +272,7 @@ static void test_visitor_in_list(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44 } ]");
>  
>      visit_type_UserDefOneList(v, &head, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert(head != NULL);
>  
>      for (i = 0, item = head; item; item = item->next, i++) {
> @@ -601,7 +601,7 @@ static void test_visitor_in_errors(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "{ 'integer': false, 'boolean': 'foo', 'string': -42 }");
>  
>      visit_type_TestStruct(v, &p, NULL, &errp);
> -    g_assert(error_is_set(&errp));
> +    g_assert(errp);
>      g_assert(p->string == NULL);
>  
>      error_free(errp);
> diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c
> index e073d83..f31d168 100644
> --- a/tests/test-qmp-output-visitor.c
> +++ b/tests/test-qmp-output-visitor.c
> @@ -49,7 +49,7 @@ static void test_visitor_out_int(TestOutputVisitorData *data,
>      QObject *obj;
>  
>      visit_type_int(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -67,7 +67,7 @@ static void test_visitor_out_bool(TestOutputVisitorData *data,
>      QObject *obj;
>  
>      visit_type_bool(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -85,7 +85,7 @@ static void test_visitor_out_number(TestOutputVisitorData *data,
>      QObject *obj;
>  
>      visit_type_number(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -103,7 +103,7 @@ static void test_visitor_out_string(TestOutputVisitorData *data,
>      QObject *obj;
>  
>      visit_type_str(data->ov, &string, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -122,7 +122,7 @@ static void test_visitor_out_no_string(TestOutputVisitorData *data,
>  
>      /* A null string should return "" */
>      visit_type_str(data->ov, &string, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -141,7 +141,7 @@ static void test_visitor_out_enum(TestOutputVisitorData *data,
>  
>      for (i = 0; i < ENUM_ONE_MAX; i++) {
>          visit_type_EnumOne(data->ov, &i, "unused", &errp);
> -        g_assert(!error_is_set(&errp));
> +        g_assert(!errp);
>  
>          obj = qmp_output_get_qobject(data->qov);
>          g_assert(obj != NULL);
> @@ -161,7 +161,7 @@ static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
>      for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
>          errp = NULL;
>          visit_type_EnumOne(data->ov, &bad_values[i], "unused", &errp);
> -        g_assert(error_is_set(&errp) == true);
> +        g_assert(errp);
>          error_free(errp);
>      }
>  }
> @@ -198,7 +198,7 @@ static void test_visitor_out_struct(TestOutputVisitorData *data,
>      QDict *qdict;
>  
>      visit_type_TestStruct(data->ov, &p, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -241,7 +241,7 @@ static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
>      ud2->dict1.dict3.string3 = g_strdup(strings[3]);
>  
>      visit_type_UserDefNested(data->ov, &ud2, "unused", &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> @@ -288,7 +288,7 @@ static void test_visitor_out_struct_errors(TestOutputVisitorData *data,
>          u.has_enum1 = true;
>          u.enum1 = bad_values[i];
>          visit_type_UserDefOne(data->ov, &pu, "unused", &errp);
> -        g_assert(error_is_set(&errp) == true);
> +        g_assert(errp);
>          error_free(errp);
>      }
>  }
> @@ -343,7 +343,7 @@ static void test_visitor_out_list(TestOutputVisitorData *data,
>      }
>  
>      visit_type_TestStructList(data->ov, &head, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>  
>      obj = qmp_output_get_qobject(data->qov);
>      g_assert(obj != NULL);
> diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
> index 5989f81..d406263 100644
> --- a/tests/test-string-input-visitor.c
> +++ b/tests/test-string-input-visitor.c
> @@ -60,7 +60,7 @@ static void test_visitor_in_int(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "-42");
>  
>      visit_type_int(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, value);
>  }
>  
> @@ -74,42 +74,42 @@ static void test_visitor_in_bool(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "true");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, true);
>      visitor_input_teardown(data, unused);
>  
>      v = visitor_input_test_init(data, "yes");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, true);
>      visitor_input_teardown(data, unused);
>  
>      v = visitor_input_test_init(data, "on");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, true);
>      visitor_input_teardown(data, unused);
>  
>      v = visitor_input_test_init(data, "false");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, false);
>      visitor_input_teardown(data, unused);
>  
>      v = visitor_input_test_init(data, "no");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, false);
>      visitor_input_teardown(data, unused);
>  
>      v = visitor_input_test_init(data, "off");
>  
>      visit_type_bool(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpint(res, ==, false);
>  }
>  
> @@ -123,7 +123,7 @@ static void test_visitor_in_number(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, "3.14");
>  
>      visit_type_number(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpfloat(res, ==, value);
>  }
>  
> @@ -137,7 +137,7 @@ static void test_visitor_in_string(TestInputVisitorData *data,
>      v = visitor_input_test_init(data, value);
>  
>      visit_type_str(v, &res, NULL, &errp);
> -    g_assert(!error_is_set(&errp));
> +    g_assert(!errp);
>      g_assert_cmpstr(res, ==, value);
>  
>      g_free(res);
> @@ -156,7 +156,7 @@ static void test_visitor_in_enum(TestInputVisitorData *data,
>          v = visitor_input_test_init(data, EnumOne_lookup[i]);
>  
>          visit_type_EnumOne(v, &res, NULL, &errp);
> -        g_assert(!error_is_set(&errp));
> +        g_assert(!errp);
>          g_assert_cmpint(i, ==, res);
>  
>          visitor_input_teardown(data, NULL);
> diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-visitor.c
> index 79d815f..52231cd 100644
> --- a/tests/test-string-output-visitor.c
> +++ b/tests/test-string-output-visitor.c
> @@ -49,7 +49,7 @@ static void test_visitor_out_int(TestOutputVisitorData *data,
>      char *str;
>  
>      visit_type_int(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      str = string_output_get_string(data->sov);
>      g_assert(str != NULL);
> @@ -65,7 +65,7 @@ static void test_visitor_out_bool(TestOutputVisitorData *data,
>      char *str;
>  
>      visit_type_bool(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      str = string_output_get_string(data->sov);
>      g_assert(str != NULL);
> @@ -81,7 +81,7 @@ static void test_visitor_out_number(TestOutputVisitorData *data,
>      char *str;
>  
>      visit_type_number(data->ov, &value, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      str = string_output_get_string(data->sov);
>      g_assert(str != NULL);
> @@ -97,7 +97,7 @@ static void test_visitor_out_string(TestOutputVisitorData *data,
>      char *str;
>  
>      visit_type_str(data->ov, &string, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      str = string_output_get_string(data->sov);
>      g_assert(str != NULL);
> @@ -114,7 +114,7 @@ static void test_visitor_out_no_string(TestOutputVisitorData *data,
>  
>      /* A null string should return "" */
>      visit_type_str(data->ov, &string, NULL, &errp);
> -    g_assert(error_is_set(&errp) == 0);
> +    g_assert(!errp);
>  
>      str = string_output_get_string(data->sov);
>      g_assert(str != NULL);
> @@ -131,7 +131,7 @@ static void test_visitor_out_enum(TestOutputVisitorData *data,
>  
>      for (i = 0; i < ENUM_ONE_MAX; i++) {
>          visit_type_EnumOne(data->ov, &i, "unused", &errp);
> -        g_assert(!error_is_set(&errp));
> +        g_assert(!errp);
>  
>          str = string_output_get_string(data->sov);
>          g_assert(str != NULL);
> @@ -149,7 +149,7 @@ static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
>      for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
>          errp = NULL;
>          visit_type_EnumOne(data->ov, &bad_values[i], "unused", &errp);
> -        g_assert(error_is_set(&errp) == true);
> +        g_assert(errp);
>          error_free(errp);
>      }
>  }
> diff --git a/tpm.c b/tpm.c
> index d68d69f..c371023 100644
> --- a/tpm.c
> +++ b/tpm.c
> @@ -161,7 +161,7 @@ static int configure_tpm(QemuOpts *opts)
>  
>      /* validate backend specific opts */
>      qemu_opts_validate(opts, be->opts, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return 1;
> diff --git a/util/qemu-config.c b/util/qemu-config.c
> index 9298f55..797df71 100644
> --- a/util/qemu-config.c
> +++ b/util/qemu-config.c
> @@ -31,7 +31,7 @@ QemuOptsList *qemu_find_opts(const char *group)
>      Error *local_err = NULL;
>  
>      ret = find_list(vm_config_groups, group, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_report("%s", error_get_pretty(local_err));
>          error_free(local_err);
>      }
> @@ -295,7 +295,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
>          if (sscanf(line, "[%63s \"%63[^\"]\"]", group, id) == 2) {
>              /* group with id */
>              list = find_list(lists, group, &local_err);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_report("%s", error_get_pretty(local_err));
>                  error_free(local_err);
>                  goto out;
> @@ -306,7 +306,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
>          if (sscanf(line, "[%63[^]]]", group) == 1) {
>              /* group without id */
>              list = find_list(lists, group, &local_err);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_report("%s", error_get_pretty(local_err));
>                  error_free(local_err);
>                  goto out;
> @@ -376,13 +376,13 @@ static void config_parse_qdict_section(QDict *options, QemuOptsList *opts,
>      }
>  
>      subopts = qemu_opts_create(opts, NULL, 0, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          goto out;
>      }
>  
>      qemu_opts_absorb_qdict(subopts, subqdict, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          goto out;
>      }
> @@ -416,13 +416,13 @@ static void config_parse_qdict_section(QDict *options, QemuOptsList *opts,
>              opt_name = g_strdup_printf("%s.%u", opts->name, i++);
>              subopts = qemu_opts_create(opts, opt_name, 1, &local_err);
>              g_free(opt_name);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_propagate(errp, local_err);
>                  goto out;
>              }
>  
>              qemu_opts_absorb_qdict(subopts, section, &local_err);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_propagate(errp, local_err);
>                  qemu_opts_del(subopts);
>                  goto out;
> @@ -450,7 +450,7 @@ void qemu_config_parse_qdict(QDict *options, QemuOptsList **lists,
>  
>      for (i = 0; lists[i]; i++) {
>          config_parse_qdict_section(options, lists[i], &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              return;
>          }
> diff --git a/util/qemu-option.c b/util/qemu-option.c
> index 668e5d9..fd76cd2 100644
> --- a/util/qemu-option.c
> +++ b/util/qemu-option.c
> @@ -246,7 +246,7 @@ int set_option_parameter(QEMUOptionParameter *list, const char *name,
>      switch (list->type) {
>      case OPT_FLAG:
>          parse_option_bool(name, value, &flag, &local_err);
> -        if (!error_is_set(&local_err)) {
> +        if (!local_err) {
>              list->value.n = flag;
>          }
>          break;
> @@ -269,7 +269,7 @@ int set_option_parameter(QEMUOptionParameter *list, const char *name,
>          return -1;
>      }
>  
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> @@ -640,7 +640,7 @@ static void opt_set(QemuOpts *opts, const char *name, const char *value,
>      opt->desc = desc;
>      opt->str = g_strdup(value);
>      qemu_opt_parse(opt, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          qemu_opt_del(opt);
>      }
> @@ -651,7 +651,7 @@ int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)
>      Error *local_err = NULL;
>  
>      opt_set(opts, name, value, false, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> @@ -812,7 +812,7 @@ int qemu_opts_set(QemuOptsList *list, const char *id,
>      Error *local_err = NULL;
>  
>      opts = qemu_opts_create(list, id, 1, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          qerror_report_err(local_err);
>          error_free(local_err);
>          return -1;
> @@ -897,7 +897,7 @@ static int opts_do_parse(QemuOpts *opts, const char *params,
>          if (strcmp(option, "id") != 0) {
>              /* store and parse */
>              opt_set(opts, option, value, prepend, &local_err);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  qerror_report_err(local_err);
>                  error_free(local_err);
>                  return -1;
> @@ -945,7 +945,7 @@ static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
>      assert(!defaults || list->merge_lists);
>      opts = qemu_opts_create(list, id, !defaults, &local_err);
>      if (opts == NULL) {
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              qerror_report_err(local_err);
>              error_free(local_err);
>          }
> @@ -1034,7 +1034,7 @@ QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
>  
>      opts = qemu_opts_create(list, qdict_get_try_str(qdict, "id"), 1,
>                              &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          return NULL;
>      }
> @@ -1044,7 +1044,7 @@ QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
>      state.errp = &local_err;
>      state.opts = opts;
>      qdict_iter(qdict, qemu_opts_from_qdict_1, &state);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_propagate(errp, local_err);
>          qemu_opts_del(opts);
>          return NULL;
> @@ -1075,7 +1075,7 @@ void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
>  
>          if (find_desc_by_name(opts->list->desc, entry->key)) {
>              qemu_opts_from_qdict_1(entry->key, entry->value, &state);
> -            if (error_is_set(&local_err)) {
> +            if (local_err) {
>                  error_propagate(errp, local_err);
>                  return;
>              } else {
> @@ -1129,7 +1129,7 @@ void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp)
>          }
>  
>          qemu_opt_parse(opt, &local_err);
> -        if (error_is_set(&local_err)) {
> +        if (local_err) {
>              error_propagate(errp, local_err);
>              return;
>          }
> diff --git a/vl.c b/vl.c
> index 7f4fe0d..8dbc8a5 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2320,7 +2320,7 @@ static int chardev_init_func(QemuOpts *opts, void *opaque)
>      Error *local_err = NULL;
>  
>      qemu_chr_new_from_opts(opts, NULL, &local_err);
> -    if (error_is_set(&local_err)) {
> +    if (local_err) {
>          error_report("%s", error_get_pretty(local_err));
>          error_free(local_err);
>          return -1;
Fam Zheng Feb. 11, 2014, 1:24 a.m. UTC | #6
On Mon, 02/10 15:54, Luiz Capitulino wrote:
> > @@ -875,13 +875,13 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
> >      /* Actual block device init: Functionality shared with blockdev-add */
> >      dinfo = blockdev_init(filename, bs_opts, type, &local_err);
> >      if (dinfo == NULL) {
> > -        if (error_is_set(&local_err)) {
> > +        if (local_err) {
> >              qerror_report_err(local_err);
> >              error_free(local_err);
> >          }
> >          goto fail;
> >      } else {
> > -        assert(!error_is_set(&local_err));
> > +        assert(!local_err);
> >      }
> 
> Not related to this patch, but this else clause is checking if
> dinfo != NULL and local_err != NULL, right? Shouldn't it be moved
> into blockdev_init() instead?

This is just an caller checking that the output of blockdev_init is sane, so I
think it's OK to put an assertion here.

Fam
Markus Armbruster Feb. 11, 2014, 8:25 a.m. UTC | #7
Fam Zheng <famz@redhat.com> writes:

> On Mon, 02/10 15:54, Luiz Capitulino wrote:
>> > @@ -875,13 +875,13 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
>> >      /* Actual block device init: Functionality shared with blockdev-add */
>> >      dinfo = blockdev_init(filename, bs_opts, type, &local_err);
>> >      if (dinfo == NULL) {
>> > -        if (error_is_set(&local_err)) {
>> > +        if (local_err) {
>> >              qerror_report_err(local_err);
>> >              error_free(local_err);
>> >          }
>> >          goto fail;
>> >      } else {
>> > -        assert(!error_is_set(&local_err));
>> > +        assert(!local_err);
>> >      }
>> 
>> Not related to this patch, but this else clause is checking if
>> dinfo != NULL and local_err != NULL, right? Shouldn't it be moved
>> into blockdev_init() instead?
>
> This is just an caller checking that the output of blockdev_init is sane, so I
> think it's OK to put an assertion here.

Yes, this is a common problem with functions returning a non-null
pointer on success, null pointer and an error object on failure.  Which
of the two should the caller test to figure out success vs. failure?

If it only tests the return value, and a buggy callee returns an error
object along with a null return value, the error object is leaked.

If it only tests for an error object, and a buggy callee returns a null
pointer along with an error object, we'll almost certainly crash some
time later dereferencing the null return value.

If it tests both, it'll have to deal with inconsistencies.  This is what
this caller does.
Kevin Wolf Feb. 21, 2014, 11:01 a.m. UTC | #8
Am 30.01.2014 um 15:07 hat Markus Armbruster geschrieben:
> error_is_set(&var) is the same as var != NULL, but it takes
> whole-program analysis to figure that out.  Unnecessarily hard for
> optimizers, static checkers, and human readers.  Dumb it down to
> obvious.
> 
> Gets rid of several dozen Coverity false positives.
> 
> Note that the obvious form is already used in many places.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  block.c                            | 16 +++++++--------
>  block/blkdebug.c                   |  4 ++--
>  block/blkverify.c                  |  2 +-
>  block/curl.c                       |  2 +-
>  block/gluster.c                    |  2 +-
>  block/iscsi.c                      |  2 +-
>  block/nbd.c                        |  2 +-
>  block/qapi.c                       |  4 ++--
>  block/qcow2.c                      |  6 +++---
>  block/raw-posix.c                  | 12 +++++------
>  block/raw-win32.c                  |  4 ++--
>  block/raw_bsd.c                    |  2 +-
>  block/rbd.c                        |  2 +-
>  block/sheepdog.c                   |  2 +-
>  block/snapshot.c                   |  2 +-
>  block/vvfat.c                      |  2 +-
>  blockdev.c                         | 42 +++++++++++++++++++-------------------
>  blockjob.c                         |  4 ++--

In the future, can you pleas take readability shit that causes conflicts
left and right through the appropriate subtree so that the burden of
fixing up things isn't on the maintainers?

The above files have _nothing_ to do with QMP.

Had I seen this in time before it was pulled, I would have nacked it for
going through (and therefore being based on) the wrong tree.

Kevin

>  hmp.c                              |  8 ++++----
>  hw/pci/pci-hotplug-old.c           |  4 ++--
>  hw/usb/dev-network.c               |  2 +-
>  net/net.c                          | 12 +++++------
>  qdev-monitor.c                     |  2 +-
>  qemu-char.c                        |  6 +++---
>  qemu-img.c                         |  8 ++++----
>  qga/commands-posix.c               | 18 ++++++++--------
>  qga/commands-win32.c               |  2 +-
>  savevm.c                           |  4 ++--
>  tests/test-qmp-input-strict.c      | 16 +++++++--------
>  tests/test-qmp-input-visitor.c     | 20 +++++++++---------
>  tests/test-qmp-output-visitor.c    | 22 ++++++++++----------
>  tests/test-string-input-visitor.c  | 20 +++++++++---------
>  tests/test-string-output-visitor.c | 14 ++++++-------
>  tpm.c                              |  2 +-
>  util/qemu-config.c                 | 16 +++++++--------
>  util/qemu-option.c                 | 22 ++++++++++----------
>  vl.c                               |  2 +-
>  37 files changed, 156 insertions(+), 156 deletions(-)
diff mbox

Patch

diff --git a/block.c b/block.c
index cb21a5f..aa0588f 100644
--- a/block.c
+++ b/block.c
@@ -421,7 +421,7 @@  static void coroutine_fn bdrv_create_co_entry(void *opaque)
     assert(cco->drv);
 
     ret = cco->drv->bdrv_create(cco->filename, cco->options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(&cco->err, local_err);
     }
     cco->ret = ret;
@@ -460,7 +460,7 @@  int bdrv_create(BlockDriver *drv, const char* filename,
 
     ret = cco.ret;
     if (ret < 0) {
-        if (error_is_set(&cco.err)) {
+        if (cco.err) {
             error_propagate(errp, cco.err);
         } else {
             error_setg_errno(errp, -ret, "Could not create image");
@@ -486,7 +486,7 @@  int bdrv_create_file(const char* filename, QEMUOptionParameter *options,
     }
 
     ret = bdrv_create(drv, filename, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
@@ -903,7 +903,7 @@  static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file,
     }
 
     if (ret < 0) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
         } else if (bs->filename[0]) {
             error_setg_errno(errp, -ret, "Could not open '%s'", bs->filename);
@@ -1025,7 +1025,7 @@  int bdrv_file_open(BlockDriverState **pbs, const char *filename,
     /* Parse the filename and open it */
     if (drv->bdrv_parse_filename && filename) {
         drv->bdrv_parse_filename(filename, options, &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             ret = -EINVAL;
             goto fail;
@@ -1399,7 +1399,7 @@  fail:
     QDECREF(bs->options);
     QDECREF(options);
     bs->options = NULL;
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
@@ -1407,7 +1407,7 @@  fail:
 close_and_fail:
     bdrv_close(bs);
     QDECREF(options);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
@@ -5335,7 +5335,7 @@  out:
     free_option_parameters(create_options);
     free_option_parameters(param);
 
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
 }
diff --git a/block/blkdebug.c b/block/blkdebug.c
index 56c4cd0..bbbdd80 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -303,7 +303,7 @@  static int read_config(BDRVBlkdebugState *s, const char *filename,
     }
 
     qemu_config_parse_qdict(options, config_groups, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
@@ -393,7 +393,7 @@  static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
diff --git a/block/blkverify.c b/block/blkverify.c
index cfcbcf4..1563c88 100644
--- a/block/blkverify.c
+++ b/block/blkverify.c
@@ -128,7 +128,7 @@  static int blkverify_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
diff --git a/block/curl.c b/block/curl.c
index a807584..bb1fc4a 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -463,7 +463,7 @@  static int curl_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         goto out_noclean;
diff --git a/block/gluster.c b/block/gluster.c
index a009b15..58eab07 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -282,7 +282,7 @@  static int qemu_gluster_open(BlockDriverState *bs,  QDict *options,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         ret = -EINVAL;
diff --git a/block/iscsi.c b/block/iscsi.c
index 6f4af72..835c66b 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -1123,7 +1123,7 @@  static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         ret = -EINVAL;
diff --git a/block/nbd.c b/block/nbd.c
index 327e913..abae506 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -209,7 +209,7 @@  static int nbd_config(BDRVNBDState *s, QDict *options, char **export)
                                       &error_abort);
 
     qemu_opts_absorb_qdict(s->socket_opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -EINVAL;
diff --git a/block/qapi.c b/block/qapi.c
index 8f4134b..8f2b4db 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -271,7 +271,7 @@  void bdrv_query_info(BlockDriverState *bs,
         p_image_info = &info->inserted->image;
         while (1) {
             bdrv_query_image_info(bs0, p_image_info, &local_err);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_propagate(errp, local_err);
                 goto err;
             }
@@ -336,7 +336,7 @@  BlockInfoList *qmp_query_block(Error **errp)
      while ((bs = bdrv_next(bs))) {
         BlockInfoList *info = g_malloc0(sizeof(*info));
         bdrv_query_info(bs, &info->value, &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             goto err;
         }
diff --git a/block/qcow2.c b/block/qcow2.c
index 2da62b8..04069cd 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -671,7 +671,7 @@  static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
     /* Enable lazy_refcounts according to image and command line options */
     opts = qemu_opts_create(&qcow2_runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
@@ -1603,7 +1603,7 @@  static int qcow2_create2(const char *filename, int64_t total_size,
     ret = bdrv_open(bs, filename, NULL,
                     BDRV_O_RDWR | BDRV_O_CACHE_WB | BDRV_O_NO_BACKING,
                     drv, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         goto out;
     }
@@ -1683,7 +1683,7 @@  static int qcow2_create(const char *filename, QEMUOptionParameter *options,
 
     ret = qcow2_create2(filename, sectors, backing_file, backing_fmt, flags,
                         cluster_size, prealloc, options, version, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
diff --git a/block/raw-posix.c b/block/raw-posix.c
index 126a634..161ea14 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -361,7 +361,7 @@  static int raw_open_common(BlockDriverState *bs, QDict *options,
 
     opts = qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
@@ -448,7 +448,7 @@  static int raw_open(BlockDriverState *bs, QDict *options, int flags,
 
     s->type = FTYPE_FILE;
     ret = raw_open_common(bs, options, flags, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
@@ -1597,7 +1597,7 @@  static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
 
     ret = raw_open_common(bs, options, flags, 0, &local_err);
     if (ret < 0) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
         }
         return ret;
@@ -1832,7 +1832,7 @@  static int floppy_open(BlockDriverState *bs, QDict *options, int flags,
     /* open will not fail even if no floppy is inserted, so add O_NONBLOCK */
     ret = raw_open_common(bs, options, flags, O_NONBLOCK, &local_err);
     if (ret) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
         }
         return ret;
@@ -1961,7 +1961,7 @@  static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
 
     /* open will not fail even if no CD is inserted, so add O_NONBLOCK */
     ret = raw_open_common(bs, options, flags, O_NONBLOCK, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
@@ -2078,7 +2078,7 @@  static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
 
     ret = raw_open_common(bs, options, flags, 0, &local_err);
     if (ret) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
         }
         return ret;
diff --git a/block/raw-win32.c b/block/raw-win32.c
index beb7f23..ae1c8e6 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -279,7 +279,7 @@  static int raw_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&raw_runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto fail;
@@ -594,7 +594,7 @@  static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
     QemuOpts *opts = qemu_opts_create(&raw_runtime_opts, NULL, 0,
                                       &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         ret = -EINVAL;
         goto done;
diff --git a/block/raw_bsd.c b/block/raw_bsd.c
index 978ae7a..2e95208 100644
--- a/block/raw_bsd.c
+++ b/block/raw_bsd.c
@@ -140,7 +140,7 @@  static int raw_create(const char *filename, QEMUOptionParameter *options,
     int ret;
 
     ret = bdrv_create_file(filename, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
     return ret;
diff --git a/block/rbd.c b/block/rbd.c
index 121fae2..dbc79f4 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -440,7 +440,7 @@  static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         qemu_opts_del(opts);
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 672b9c9..e6c0376 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -1385,7 +1385,7 @@  static int sd_open(BlockDriverState *bs, QDict *options, int flags,
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         ret = -EINVAL;
diff --git a/block/snapshot.c b/block/snapshot.c
index 9047f8d..85c52ff 100644
--- a/block/snapshot.c
+++ b/block/snapshot.c
@@ -345,7 +345,7 @@  int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
         ret = bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err);
     }
 
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
     }
 
diff --git a/block/vvfat.c b/block/vvfat.c
index 664941c..a19e4ca 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -1085,7 +1085,7 @@  DLOG(if (stderr == NULL) {
 
     opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
     qemu_opts_absorb_qdict(opts, options, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         ret = -EINVAL;
diff --git a/blockdev.c b/blockdev.c
index 36ceece..be05a58 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -331,13 +331,13 @@  static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
      * stay in bs_opts for processing by bdrv_open(). */
     id = qdict_get_try_str(bs_opts, "id");
     opts = qemu_opts_create(&qemu_common_drive_opts, id, 1, &error);
-    if (error_is_set(&error)) {
+    if (error) {
         error_propagate(errp, error);
         return NULL;
     }
 
     qemu_opts_absorb_qdict(opts, bs_opts, &error);
-    if (error_is_set(&error)) {
+    if (error) {
         error_propagate(errp, error);
         goto early_err;
     }
@@ -443,7 +443,7 @@  static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
         }
 
         on_write_error = parse_block_error_action(buf, 0, &error);
-        if (error_is_set(&error)) {
+        if (error) {
             error_propagate(errp, error);
             goto early_err;
         }
@@ -457,7 +457,7 @@  static DriveInfo *blockdev_init(const char *file, QDict *bs_opts,
         }
 
         on_read_error = parse_block_error_action(buf, 1, &error);
-        if (error_is_set(&error)) {
+        if (error) {
             error_propagate(errp, error);
             goto early_err;
         }
@@ -688,7 +688,7 @@  DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
     legacy_opts = qemu_opts_create(&qemu_legacy_drive_opts, NULL, 0,
                                    &error_abort);
     qemu_opts_absorb_qdict(legacy_opts, bs_opts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         goto fail;
@@ -875,13 +875,13 @@  DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
     /* Actual block device init: Functionality shared with blockdev-add */
     dinfo = blockdev_init(filename, bs_opts, type, &local_err);
     if (dinfo == NULL) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             qerror_report_err(local_err);
             error_free(local_err);
         }
         goto fail;
     } else {
-        assert(!error_is_set(&local_err));
+        assert(!local_err);
     }
 
     /* Set legacy DriveInfo fields */
@@ -1017,7 +1017,7 @@  SnapshotInfo *qmp_blockdev_snapshot_delete_internal_sync(const char *device,
     }
 
     ret = bdrv_snapshot_find_by_id_and_name(bs, id, name, &sn, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return NULL;
     }
@@ -1030,7 +1030,7 @@  SnapshotInfo *qmp_blockdev_snapshot_delete_internal_sync(const char *device,
     }
 
     bdrv_snapshot_delete(bs, id, name, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return NULL;
     }
@@ -1244,7 +1244,7 @@  static void external_snapshot_prepare(BlkTransactionState *common,
     state->old_bs = bdrv_lookup_bs(has_device ? device : NULL,
                                    has_node_name ? node_name : NULL,
                                    &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -1289,7 +1289,7 @@  static void external_snapshot_prepare(BlkTransactionState *common,
                         state->old_bs->filename,
                         state->old_bs->drv->format_name,
                         NULL, -1, flags, &local_err, false);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             return;
         }
@@ -1360,7 +1360,7 @@  static void drive_backup_prepare(BlkTransactionState *common, Error **errp)
                      backup->has_on_source_error, backup->on_source_error,
                      backup->has_on_target_error, backup->on_target_error,
                      &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         state->bs = NULL;
         state->job = NULL;
@@ -1452,7 +1452,7 @@  void qmp_transaction(TransactionActionList *dev_list, Error **errp)
         QSIMPLEQ_INSERT_TAIL(&snap_bdrv_states, state, entry);
 
         state->ops->prepare(state, &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             goto delete_and_fail;
         }
@@ -1533,7 +1533,7 @@  void qmp_block_passwd(bool has_device, const char *device,
     bs = bdrv_lookup_bs(has_device ? device : NULL,
                         has_node_name ? node_name : NULL,
                         &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -1598,7 +1598,7 @@  void qmp_change_blockdev(const char *device, const char *filename,
     }
 
     eject_device(bs, 0, &err);
-    if (error_is_set(&err)) {
+    if (err) {
         error_propagate(errp, err);
         return;
     }
@@ -1735,7 +1735,7 @@  void qmp_block_resize(bool has_device, const char *device,
     bs = bdrv_lookup_bs(has_device ? device : NULL,
                         has_node_name ? node_name : NULL,
                         &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -1828,7 +1828,7 @@  void qmp_block_stream(const char *device, bool has_base,
 
     stream_start(bs, base_bs, base, has_speed ? speed : 0,
                  on_error, block_job_cb, bs, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -1986,7 +1986,7 @@  void qmp_drive_backup(const char *device, const char *target,
         }
     }
 
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -2127,7 +2127,7 @@  void qmp_drive_mirror(const char *device, const char *target,
         }
     }
 
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -2266,7 +2266,7 @@  void qmp_blockdev_add(BlockdevOptions *options, Error **errp)
 
     visit_type_BlockdevOptions(qmp_output_get_visitor(ov),
                                &options, NULL, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         goto fail;
     }
@@ -2277,7 +2277,7 @@  void qmp_blockdev_add(BlockdevOptions *options, Error **errp)
     qdict_flatten(qdict);
 
     blockdev_init(NULL, qdict, IF_NONE, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         goto fail;
     }
diff --git a/blockjob.c b/blockjob.c
index 9e5fd5c..b3ce14c 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -61,7 +61,7 @@  void *block_job_create(const BlockJobDriver *driver, BlockDriverState *bs,
         Error *local_err = NULL;
 
         block_job_set_speed(job, speed, &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             bs->job = NULL;
             g_free(job);
             bdrv_set_in_use(bs, 0);
@@ -92,7 +92,7 @@  void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp)
         return;
     }
     job->driver->set_speed(job, speed, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
diff --git a/hmp.c b/hmp.c
index 1af0809..5a24ac1 100644
--- a/hmp.c
+++ b/hmp.c
@@ -881,7 +881,7 @@  void hmp_balloon(Monitor *mon, const QDict *qdict)
     Error *errp = NULL;
 
     qmp_balloon(value, &errp);
-    if (error_is_set(&errp)) {
+    if (errp) {
         monitor_printf(mon, "balloon: %s\n", error_get_pretty(errp));
         error_free(errp);
     }
@@ -1118,7 +1118,7 @@  void hmp_change(Monitor *mon, const QDict *qdict)
     }
 
     qmp_change(device, target, !!arg, arg, &err);
-    if (error_is_set(&err) &&
+    if (err &&
         error_get_class(err) == ERROR_CLASS_DEVICE_ENCRYPTED) {
         error_free(err);
         monitor_read_block_device_key(mon, device, NULL, NULL);
@@ -1335,12 +1335,12 @@  void hmp_netdev_add(Monitor *mon, const QDict *qdict)
     QemuOpts *opts;
 
     opts = qemu_opts_from_qdict(qemu_find_opts("netdev"), qdict, &err);
-    if (error_is_set(&err)) {
+    if (err) {
         goto out;
     }
 
     netdev_add(opts, &err);
-    if (error_is_set(&err)) {
+    if (err) {
         qemu_opts_del(opts);
     }
 
diff --git a/hw/pci/pci-hotplug-old.c b/hw/pci/pci-hotplug-old.c
index 8dbc3c1..cf2caeb 100644
--- a/hw/pci/pci-hotplug-old.c
+++ b/hw/pci/pci-hotplug-old.c
@@ -90,7 +90,7 @@  static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
     qemu_opt_set(opts, "type", "nic");
 
     ret = net_client_init(opts, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return NULL;
@@ -322,7 +322,7 @@  static int pci_device_hot_remove(Monitor *mon, const char *pci_addr)
     }
 
     qdev_unplug(&d->qdev, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         monitor_printf(mon, "%s\n", error_get_pretty(local_err));
         error_free(local_err);
         return -1;
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 4c532b7..f0c2536 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -1391,7 +1391,7 @@  static USBDevice *usb_net_init(USBBus *bus, const char *cmdline)
     qemu_opt_set(opts, "model", "usb");
 
     idx = net_client_init(opts, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return NULL;
diff --git a/net/net.c b/net/net.c
index f8db85f..2587b80 100644
--- a/net/net.c
+++ b/net/net.c
@@ -885,7 +885,7 @@  void net_host_device_add(Monitor *mon, const QDict *qdict)
     qemu_opt_set(opts, "type", device);
 
     net_client_init(opts, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         monitor_printf(mon, "adding host network device %s failed\n", device);
@@ -921,17 +921,17 @@  int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret)
     QemuOpts *opts;
 
     opts_list = qemu_find_opts_err("netdev", &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         goto exit_err;
     }
 
     opts = qemu_opts_from_qdict(opts_list, qdict, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         goto exit_err;
     }
 
     netdev_add(opts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qemu_opts_del(opts);
         goto exit_err;
     }
@@ -1155,7 +1155,7 @@  static int net_init_client(QemuOpts *opts, void *dummy)
     Error *local_err = NULL;
 
     net_client_init(opts, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
@@ -1170,7 +1170,7 @@  static int net_init_netdev(QemuOpts *opts, void *dummy)
     int ret;
 
     ret = net_client_init(opts, 1, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
diff --git a/qdev-monitor.c b/qdev-monitor.c
index 1d3b68d..2d1ef8d 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -656,7 +656,7 @@  int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
     DeviceState *dev;
 
     opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
diff --git a/qemu-char.c b/qemu-char.c
index 30c5a6a..d0b4ac5 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2725,7 +2725,7 @@  static CharDriverState *qemu_chr_open_socket(QemuOpts *opts)
 
     chr = qemu_chr_open_socket_fd(fd, do_nodelay, is_listen, is_telnet,
                                   is_waitconnect, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         goto fail;
     }
     return chr;
@@ -2938,7 +2938,7 @@  QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
     Error *local_err = NULL;
 
     opts = qemu_opts_create(qemu_find_opts("chardev"), label, 1, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return NULL;
@@ -3323,7 +3323,7 @@  CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*in
         return NULL;
 
     chr = qemu_chr_new_from_opts(opts, init, &err);
-    if (error_is_set(&err)) {
+    if (err) {
         error_report("%s", error_get_pretty(err));
         error_free(err);
     }
diff --git a/qemu-img.c b/qemu-img.c
index c989850..0927b09 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -419,7 +419,7 @@  static int img_create(int argc, char **argv)
 
     bdrv_img_create(filename, fmt, base_filename, base_fmt,
                     options, img_size, BDRV_O_FLAGS, &local_err, quiet);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_report("%s: %s", filename, error_get_pretty(local_err));
         error_free(local_err);
         return 1;
@@ -1289,7 +1289,7 @@  static int img_convert(int argc, char **argv)
 
         bdrv_snapshot_load_tmp_by_id_or_name(bs[0], snapshot_name, &local_err);
     }
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_report("Failed to load snapshot: %s",
                      error_get_pretty(local_err));
         error_free(local_err);
@@ -1775,7 +1775,7 @@  static ImageInfoList *collect_image_info_list(const char *filename,
         }
 
         bdrv_query_image_info(bs, &info, &err);
-        if (error_is_set(&err)) {
+        if (err) {
             error_report("%s", error_get_pretty(err));
             error_free(err);
             goto err;
@@ -2184,7 +2184,7 @@  static int img_snapshot(int argc, char **argv)
 
     case SNAPSHOT_DELETE:
         bdrv_snapshot_delete_by_id_or_name(bs, snapshot_name, &err);
-        if (error_is_set(&err)) {
+        if (err) {
             error_report("Could not delete snapshot '%s': (%s)",
                          snapshot_name, error_get_pretty(err));
             error_free(err);
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 8100bee..cae4171 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -108,7 +108,7 @@  void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err)
     }
 
     ga_wait_child(pid, &status, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return;
     }
@@ -181,7 +181,7 @@  void qmp_guest_set_time(int64_t time_ns, Error **errp)
     }
 
     ga_wait_child(pid, &status, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
@@ -669,7 +669,7 @@  static void execute_fsfreeze_hook(FsfreezeHookArg arg, Error **err)
     }
 
     ga_wait_child(pid, &status, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return;
     }
@@ -713,14 +713,14 @@  int64_t qmp_guest_fsfreeze_freeze(Error **err)
     slog("guest-fsfreeze called");
 
     execute_fsfreeze_hook(FSFREEZE_HOOK_FREEZE, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return -1;
     }
 
     QTAILQ_INIT(&mounts);
     build_fs_mount_list(&mounts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return -1;
     }
@@ -780,7 +780,7 @@  int64_t qmp_guest_fsfreeze_thaw(Error **err)
 
     QTAILQ_INIT(&mounts);
     build_fs_mount_list(&mounts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return 0;
     }
@@ -861,7 +861,7 @@  void qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **err)
 
     QTAILQ_INIT(&mounts);
     build_fs_mount_list(&mounts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         return;
     }
@@ -957,7 +957,7 @@  static void bios_supports_mode(const char *pmutils_bin, const char *pmutils_arg,
     }
 
     ga_wait_child(pid, &status, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         goto out;
     }
@@ -1034,7 +1034,7 @@  static void guest_suspend(const char *pmutils_bin, const char *sysfile_str,
     }
 
     ga_wait_child(pid, &status, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(err, local_err);
         goto out;
     }
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index a6a0af2..50094dd 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -197,7 +197,7 @@  int64_t qmp_guest_fsfreeze_freeze(Error **err)
 
 error:
     qmp_guest_fsfreeze_thaw(&local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         g_debug("cleanup thaw: %s", error_get_pretty(local_err));
         error_free(local_err);
     }
diff --git a/savevm.c b/savevm.c
index a7dbe18..7329fc5 100644
--- a/savevm.c
+++ b/savevm.c
@@ -880,7 +880,7 @@  static int del_existing_snapshots(Monitor *mon, const char *name)
         if (bdrv_can_snapshot(bs) &&
             bdrv_snapshot_find(bs, snapshot, name) >= 0) {
             bdrv_snapshot_delete_by_id_or_name(bs, name, &err);
-            if (error_is_set(&err)) {
+            if (err) {
                 monitor_printf(mon,
                                "Error while deleting snapshot on device '%s':"
                                " %s\n",
@@ -1115,7 +1115,7 @@  void do_delvm(Monitor *mon, const QDict *qdict)
     while ((bs1 = bdrv_next(bs1))) {
         if (bdrv_can_snapshot(bs1)) {
             bdrv_snapshot_delete_by_id_or_name(bs, name, &err);
-            if (error_is_set(&err)) {
+            if (err) {
                 monitor_printf(mon,
                                "Error while deleting snapshot on device '%s':"
                                " %s\n",
diff --git a/tests/test-qmp-input-strict.c b/tests/test-qmp-input-strict.c
index 6f68963..38bdf5e 100644
--- a/tests/test-qmp-input-strict.c
+++ b/tests/test-qmp-input-strict.c
@@ -92,7 +92,7 @@  static void test_validate_struct(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo' }");
 
     visit_type_TestStruct(v, &p, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_free(p->string);
     g_free(p);
 }
@@ -107,7 +107,7 @@  static void test_validate_struct_nested(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string' }, 'string2': 'string2'}}}");
 
     visit_type_UserDefNested(v, &udp, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     qapi_free_UserDefNested(udp);
 }
 
@@ -121,7 +121,7 @@  static void test_validate_list(TestInputVisitorData *data,
     v = validate_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44 } ]");
 
     visit_type_UserDefOneList(v, &head, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     qapi_free_UserDefOneList(head);
 }
 
@@ -135,7 +135,7 @@  static void test_validate_union(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'type': 'b', 'data' : { 'integer': 42 } }");
 
     visit_type_UserDefUnion(v, &tmp, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     qapi_free_UserDefUnion(tmp);
 }
 
@@ -149,7 +149,7 @@  static void test_validate_fail_struct(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo', 'extra': 42 }");
 
     visit_type_TestStruct(v, &p, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     if (p) {
         g_free(p->string);
     }
@@ -166,7 +166,7 @@  static void test_validate_fail_struct_nested(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string', 'extra': [42, 23, {'foo':'bar'}] }, 'string2': 'string2'}}}");
 
     visit_type_UserDefNested(v, &udp, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     qapi_free_UserDefNested(udp);
 }
 
@@ -180,7 +180,7 @@  static void test_validate_fail_list(TestInputVisitorData *data,
     v = validate_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44, 'extra': 'ggg' } ]");
 
     visit_type_UserDefOneList(v, &head, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     qapi_free_UserDefOneList(head);
 }
 
@@ -194,7 +194,7 @@  static void test_validate_fail_union(TestInputVisitorData *data,
     v = validate_test_init(data, "{ 'type': 'b', 'data' : { 'integer': 42 }, 'extra': 'yyy' }");
 
     visit_type_UserDefUnion(v, &tmp, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     qapi_free_UserDefUnion(tmp);
 }
 
diff --git a/tests/test-qmp-input-visitor.c b/tests/test-qmp-input-visitor.c
index 1e1c6fa..6eb7dc5 100644
--- a/tests/test-qmp-input-visitor.c
+++ b/tests/test-qmp-input-visitor.c
@@ -96,7 +96,7 @@  static void test_visitor_in_int(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "%" PRId64, value);
 
     visit_type_int(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, value);
 }
 
@@ -114,7 +114,7 @@  static void test_visitor_in_int_overflow(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "%f", DBL_MAX);
 
     visit_type_int(v, &res, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     error_free(errp);
 }
 
@@ -128,7 +128,7 @@  static void test_visitor_in_bool(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "true");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, true);
 }
 
@@ -142,7 +142,7 @@  static void test_visitor_in_number(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "%f", value);
 
     visit_type_number(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpfloat(res, ==, value);
 }
 
@@ -156,7 +156,7 @@  static void test_visitor_in_string(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "%s", value);
 
     visit_type_str(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpstr(res, ==, value);
 
     g_free(res);
@@ -175,7 +175,7 @@  static void test_visitor_in_enum(TestInputVisitorData *data,
         v = visitor_input_test_init(data, "%s", EnumOne_lookup[i]);
 
         visit_type_EnumOne(v, &res, NULL, &errp);
-        g_assert(!error_is_set(&errp));
+        g_assert(!errp);
         g_assert_cmpint(i, ==, res);
 
         visitor_input_teardown(data, NULL);
@@ -223,7 +223,7 @@  static void test_visitor_in_struct(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "{ 'integer': -42, 'boolean': true, 'string': 'foo' }");
 
     visit_type_TestStruct(v, &p, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(p->integer, ==, -42);
     g_assert(p->boolean == true);
     g_assert_cmpstr(p->string, ==, "foo");
@@ -248,7 +248,7 @@  static void test_visitor_in_struct_nested(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "{ 'string0': 'string0', 'dict1': { 'string1': 'string1', 'dict2': { 'userdef1': { 'integer': 42, 'string': 'string' }, 'string2': 'string2'}}}");
 
     visit_type_UserDefNested(v, &udp, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
 
     check_and_free_str(udp->string0, "string0");
     check_and_free_str(udp->dict1.string1, "string1");
@@ -272,7 +272,7 @@  static void test_visitor_in_list(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "[ { 'string': 'string0', 'integer': 42 }, { 'string': 'string1', 'integer': 43 }, { 'string': 'string2', 'integer': 44 } ]");
 
     visit_type_UserDefOneList(v, &head, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert(head != NULL);
 
     for (i = 0, item = head; item; item = item->next, i++) {
@@ -601,7 +601,7 @@  static void test_visitor_in_errors(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "{ 'integer': false, 'boolean': 'foo', 'string': -42 }");
 
     visit_type_TestStruct(v, &p, NULL, &errp);
-    g_assert(error_is_set(&errp));
+    g_assert(errp);
     g_assert(p->string == NULL);
 
     error_free(errp);
diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c
index e073d83..f31d168 100644
--- a/tests/test-qmp-output-visitor.c
+++ b/tests/test-qmp-output-visitor.c
@@ -49,7 +49,7 @@  static void test_visitor_out_int(TestOutputVisitorData *data,
     QObject *obj;
 
     visit_type_int(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -67,7 +67,7 @@  static void test_visitor_out_bool(TestOutputVisitorData *data,
     QObject *obj;
 
     visit_type_bool(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -85,7 +85,7 @@  static void test_visitor_out_number(TestOutputVisitorData *data,
     QObject *obj;
 
     visit_type_number(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -103,7 +103,7 @@  static void test_visitor_out_string(TestOutputVisitorData *data,
     QObject *obj;
 
     visit_type_str(data->ov, &string, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -122,7 +122,7 @@  static void test_visitor_out_no_string(TestOutputVisitorData *data,
 
     /* A null string should return "" */
     visit_type_str(data->ov, &string, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -141,7 +141,7 @@  static void test_visitor_out_enum(TestOutputVisitorData *data,
 
     for (i = 0; i < ENUM_ONE_MAX; i++) {
         visit_type_EnumOne(data->ov, &i, "unused", &errp);
-        g_assert(!error_is_set(&errp));
+        g_assert(!errp);
 
         obj = qmp_output_get_qobject(data->qov);
         g_assert(obj != NULL);
@@ -161,7 +161,7 @@  static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
     for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
         errp = NULL;
         visit_type_EnumOne(data->ov, &bad_values[i], "unused", &errp);
-        g_assert(error_is_set(&errp) == true);
+        g_assert(errp);
         error_free(errp);
     }
 }
@@ -198,7 +198,7 @@  static void test_visitor_out_struct(TestOutputVisitorData *data,
     QDict *qdict;
 
     visit_type_TestStruct(data->ov, &p, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -241,7 +241,7 @@  static void test_visitor_out_struct_nested(TestOutputVisitorData *data,
     ud2->dict1.dict3.string3 = g_strdup(strings[3]);
 
     visit_type_UserDefNested(data->ov, &ud2, "unused", &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
@@ -288,7 +288,7 @@  static void test_visitor_out_struct_errors(TestOutputVisitorData *data,
         u.has_enum1 = true;
         u.enum1 = bad_values[i];
         visit_type_UserDefOne(data->ov, &pu, "unused", &errp);
-        g_assert(error_is_set(&errp) == true);
+        g_assert(errp);
         error_free(errp);
     }
 }
@@ -343,7 +343,7 @@  static void test_visitor_out_list(TestOutputVisitorData *data,
     }
 
     visit_type_TestStructList(data->ov, &head, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
 
     obj = qmp_output_get_qobject(data->qov);
     g_assert(obj != NULL);
diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
index 5989f81..d406263 100644
--- a/tests/test-string-input-visitor.c
+++ b/tests/test-string-input-visitor.c
@@ -60,7 +60,7 @@  static void test_visitor_in_int(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "-42");
 
     visit_type_int(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, value);
 }
 
@@ -74,42 +74,42 @@  static void test_visitor_in_bool(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "true");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, true);
     visitor_input_teardown(data, unused);
 
     v = visitor_input_test_init(data, "yes");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, true);
     visitor_input_teardown(data, unused);
 
     v = visitor_input_test_init(data, "on");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, true);
     visitor_input_teardown(data, unused);
 
     v = visitor_input_test_init(data, "false");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, false);
     visitor_input_teardown(data, unused);
 
     v = visitor_input_test_init(data, "no");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, false);
     visitor_input_teardown(data, unused);
 
     v = visitor_input_test_init(data, "off");
 
     visit_type_bool(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpint(res, ==, false);
 }
 
@@ -123,7 +123,7 @@  static void test_visitor_in_number(TestInputVisitorData *data,
     v = visitor_input_test_init(data, "3.14");
 
     visit_type_number(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpfloat(res, ==, value);
 }
 
@@ -137,7 +137,7 @@  static void test_visitor_in_string(TestInputVisitorData *data,
     v = visitor_input_test_init(data, value);
 
     visit_type_str(v, &res, NULL, &errp);
-    g_assert(!error_is_set(&errp));
+    g_assert(!errp);
     g_assert_cmpstr(res, ==, value);
 
     g_free(res);
@@ -156,7 +156,7 @@  static void test_visitor_in_enum(TestInputVisitorData *data,
         v = visitor_input_test_init(data, EnumOne_lookup[i]);
 
         visit_type_EnumOne(v, &res, NULL, &errp);
-        g_assert(!error_is_set(&errp));
+        g_assert(!errp);
         g_assert_cmpint(i, ==, res);
 
         visitor_input_teardown(data, NULL);
diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-visitor.c
index 79d815f..52231cd 100644
--- a/tests/test-string-output-visitor.c
+++ b/tests/test-string-output-visitor.c
@@ -49,7 +49,7 @@  static void test_visitor_out_int(TestOutputVisitorData *data,
     char *str;
 
     visit_type_int(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     str = string_output_get_string(data->sov);
     g_assert(str != NULL);
@@ -65,7 +65,7 @@  static void test_visitor_out_bool(TestOutputVisitorData *data,
     char *str;
 
     visit_type_bool(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     str = string_output_get_string(data->sov);
     g_assert(str != NULL);
@@ -81,7 +81,7 @@  static void test_visitor_out_number(TestOutputVisitorData *data,
     char *str;
 
     visit_type_number(data->ov, &value, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     str = string_output_get_string(data->sov);
     g_assert(str != NULL);
@@ -97,7 +97,7 @@  static void test_visitor_out_string(TestOutputVisitorData *data,
     char *str;
 
     visit_type_str(data->ov, &string, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     str = string_output_get_string(data->sov);
     g_assert(str != NULL);
@@ -114,7 +114,7 @@  static void test_visitor_out_no_string(TestOutputVisitorData *data,
 
     /* A null string should return "" */
     visit_type_str(data->ov, &string, NULL, &errp);
-    g_assert(error_is_set(&errp) == 0);
+    g_assert(!errp);
 
     str = string_output_get_string(data->sov);
     g_assert(str != NULL);
@@ -131,7 +131,7 @@  static void test_visitor_out_enum(TestOutputVisitorData *data,
 
     for (i = 0; i < ENUM_ONE_MAX; i++) {
         visit_type_EnumOne(data->ov, &i, "unused", &errp);
-        g_assert(!error_is_set(&errp));
+        g_assert(!errp);
 
         str = string_output_get_string(data->sov);
         g_assert(str != NULL);
@@ -149,7 +149,7 @@  static void test_visitor_out_enum_errors(TestOutputVisitorData *data,
     for (i = 0; i < ARRAY_SIZE(bad_values) ; i++) {
         errp = NULL;
         visit_type_EnumOne(data->ov, &bad_values[i], "unused", &errp);
-        g_assert(error_is_set(&errp) == true);
+        g_assert(errp);
         error_free(errp);
     }
 }
diff --git a/tpm.c b/tpm.c
index d68d69f..c371023 100644
--- a/tpm.c
+++ b/tpm.c
@@ -161,7 +161,7 @@  static int configure_tpm(QemuOpts *opts)
 
     /* validate backend specific opts */
     qemu_opts_validate(opts, be->opts, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return 1;
diff --git a/util/qemu-config.c b/util/qemu-config.c
index 9298f55..797df71 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -31,7 +31,7 @@  QemuOptsList *qemu_find_opts(const char *group)
     Error *local_err = NULL;
 
     ret = find_list(vm_config_groups, group, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_report("%s", error_get_pretty(local_err));
         error_free(local_err);
     }
@@ -295,7 +295,7 @@  int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
         if (sscanf(line, "[%63s \"%63[^\"]\"]", group, id) == 2) {
             /* group with id */
             list = find_list(lists, group, &local_err);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_report("%s", error_get_pretty(local_err));
                 error_free(local_err);
                 goto out;
@@ -306,7 +306,7 @@  int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
         if (sscanf(line, "[%63[^]]]", group) == 1) {
             /* group without id */
             list = find_list(lists, group, &local_err);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_report("%s", error_get_pretty(local_err));
                 error_free(local_err);
                 goto out;
@@ -376,13 +376,13 @@  static void config_parse_qdict_section(QDict *options, QemuOptsList *opts,
     }
 
     subopts = qemu_opts_create(opts, NULL, 0, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         goto out;
     }
 
     qemu_opts_absorb_qdict(subopts, subqdict, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         goto out;
     }
@@ -416,13 +416,13 @@  static void config_parse_qdict_section(QDict *options, QemuOptsList *opts,
             opt_name = g_strdup_printf("%s.%u", opts->name, i++);
             subopts = qemu_opts_create(opts, opt_name, 1, &local_err);
             g_free(opt_name);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_propagate(errp, local_err);
                 goto out;
             }
 
             qemu_opts_absorb_qdict(subopts, section, &local_err);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_propagate(errp, local_err);
                 qemu_opts_del(subopts);
                 goto out;
@@ -450,7 +450,7 @@  void qemu_config_parse_qdict(QDict *options, QemuOptsList **lists,
 
     for (i = 0; lists[i]; i++) {
         config_parse_qdict_section(options, lists[i], &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             return;
         }
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 668e5d9..fd76cd2 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -246,7 +246,7 @@  int set_option_parameter(QEMUOptionParameter *list, const char *name,
     switch (list->type) {
     case OPT_FLAG:
         parse_option_bool(name, value, &flag, &local_err);
-        if (!error_is_set(&local_err)) {
+        if (!local_err) {
             list->value.n = flag;
         }
         break;
@@ -269,7 +269,7 @@  int set_option_parameter(QEMUOptionParameter *list, const char *name,
         return -1;
     }
 
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
@@ -640,7 +640,7 @@  static void opt_set(QemuOpts *opts, const char *name, const char *value,
     opt->desc = desc;
     opt->str = g_strdup(value);
     qemu_opt_parse(opt, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         qemu_opt_del(opt);
     }
@@ -651,7 +651,7 @@  int qemu_opt_set(QemuOpts *opts, const char *name, const char *value)
     Error *local_err = NULL;
 
     opt_set(opts, name, value, false, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
@@ -812,7 +812,7 @@  int qemu_opts_set(QemuOptsList *list, const char *id,
     Error *local_err = NULL;
 
     opts = qemu_opts_create(list, id, 1, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         qerror_report_err(local_err);
         error_free(local_err);
         return -1;
@@ -897,7 +897,7 @@  static int opts_do_parse(QemuOpts *opts, const char *params,
         if (strcmp(option, "id") != 0) {
             /* store and parse */
             opt_set(opts, option, value, prepend, &local_err);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 qerror_report_err(local_err);
                 error_free(local_err);
                 return -1;
@@ -945,7 +945,7 @@  static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
     assert(!defaults || list->merge_lists);
     opts = qemu_opts_create(list, id, !defaults, &local_err);
     if (opts == NULL) {
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             qerror_report_err(local_err);
             error_free(local_err);
         }
@@ -1034,7 +1034,7 @@  QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
 
     opts = qemu_opts_create(list, qdict_get_try_str(qdict, "id"), 1,
                             &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         return NULL;
     }
@@ -1044,7 +1044,7 @@  QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
     state.errp = &local_err;
     state.opts = opts;
     qdict_iter(qdict, qemu_opts_from_qdict_1, &state);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_propagate(errp, local_err);
         qemu_opts_del(opts);
         return NULL;
@@ -1075,7 +1075,7 @@  void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
 
         if (find_desc_by_name(opts->list->desc, entry->key)) {
             qemu_opts_from_qdict_1(entry->key, entry->value, &state);
-            if (error_is_set(&local_err)) {
+            if (local_err) {
                 error_propagate(errp, local_err);
                 return;
             } else {
@@ -1129,7 +1129,7 @@  void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp)
         }
 
         qemu_opt_parse(opt, &local_err);
-        if (error_is_set(&local_err)) {
+        if (local_err) {
             error_propagate(errp, local_err);
             return;
         }
diff --git a/vl.c b/vl.c
index 7f4fe0d..8dbc8a5 100644
--- a/vl.c
+++ b/vl.c
@@ -2320,7 +2320,7 @@  static int chardev_init_func(QemuOpts *opts, void *opaque)
     Error *local_err = NULL;
 
     qemu_chr_new_from_opts(opts, NULL, &local_err);
-    if (error_is_set(&local_err)) {
+    if (local_err) {
         error_report("%s", error_get_pretty(local_err));
         error_free(local_err);
         return -1;