Message ID | 20240228163723.1775791-4-zhao1.liu@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Cleanup up to fix missing ERRP_GUARD() for error_prepend() | expand |
On Thu, Feb 29, 2024 at 12:37:10AM +0800, Zhao Liu wrote: > From: Zhao Liu <zhao1.liu@intel.com> > > As the comment in qapi/error, passing @errp to error_prepend() requires > ERRP_GUARD(): > > > In block.c, there're 4 functions passing @errp to error_prepend() > without ERRP_GUARD(): > - bdrv_co_create_opts_simple() > - parse_json_filename() > - bdrv_open_backing_file() > - bdrv_append_temp_snapshot() > > bdrv_co_create_opts_simple(), as an implementation of > BolckDriver.bdrv_co_create_opts(), its @errp parameter is so widely BlockDriver > sourced that it is necessary to protect it with ERRP_GUARD(). > > Though the @errp parameters passed to parse_json_filename(), > bdrv_open_backing_file() and bdrv_append_temp_snapshot() points to their > callers' local_err, to follow the requirement of @errp, also add missing > ERRP_GUARD() at their beginning. > > [1]: Issue description in the commit message of commit ae7c80a7bd73 > ("error: New macro ERRP_GUARD()"). > > Cc: Kevin Wolf <kwolf@redhat.com> > Cc: Hanna Reitz <hreitz@redhat.com> > Signed-off-by: Zhao Liu <zhao1.liu@intel.com> > --- > block.c | 4 ++++ > 1 file changed, 4 insertions(+) Reviewed-by: Eric Blake <eblake@redhat.com>
On Thu, Feb 29, 2024 at 01:51:16PM -0600, Eric Blake wrote: > Date: Thu, 29 Feb 2024 13:51:16 -0600 > From: Eric Blake <eblake@redhat.com> > Subject: Re: [PATCH 03/16] block: Fix missing ERRP_GUARD() for > error_prepend() > > On Thu, Feb 29, 2024 at 12:37:10AM +0800, Zhao Liu wrote: > > From: Zhao Liu <zhao1.liu@intel.com> > > > > As the comment in qapi/error, passing @errp to error_prepend() requires > > ERRP_GUARD(): > > > > > > > In block.c, there're 4 functions passing @errp to error_prepend() > > without ERRP_GUARD(): > > - bdrv_co_create_opts_simple() > > - parse_json_filename() > > - bdrv_open_backing_file() > > - bdrv_append_temp_snapshot() > > > > bdrv_co_create_opts_simple(), as an implementation of > > BolckDriver.bdrv_co_create_opts(), its @errp parameter is so widely > > BlockDriver > Good catch! Thanks and will fix! Regards, Zhao
diff --git a/block.c b/block.c index 1ed9214f66ed..cf66c767a011 100644 --- a/block.c +++ b/block.c @@ -633,6 +633,7 @@ int coroutine_fn bdrv_co_create_opts_simple(BlockDriver *drv, QemuOpts *opts, Error **errp) { + ERRP_GUARD(); BlockBackend *blk; QDict *options; int64_t size = 0; @@ -1998,6 +1999,7 @@ fail_opts: static QDict *parse_json_filename(const char *filename, Error **errp) { + ERRP_GUARD(); QObject *options_obj; QDict *options; int ret; @@ -3585,6 +3587,7 @@ int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd, int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options, const char *bdref_key, Error **errp) { + ERRP_GUARD(); char *backing_filename = NULL; char *bdref_key_dot; const char *reference = NULL; @@ -3851,6 +3854,7 @@ static BlockDriverState *bdrv_append_temp_snapshot(BlockDriverState *bs, QDict *snapshot_options, Error **errp) { + ERRP_GUARD(); g_autofree char *tmp_filename = NULL; int64_t total_size; QemuOpts *opts = NULL;