qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] block: Save errno before error_setg_errno


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH] block: Save errno before error_setg_errno
Date: Tue, 05 Nov 2013 12:26:41 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0

On 11/05/2013 12:03 PM, Max Reitz wrote:
> error_setg_errno() may overwrite errno; therefore, its value should be
> read before calling that function and not afterwards.
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Eric Blake <address@hidden>

Still, wouldn't it be easier to patch error_setg_errno (and friends) to
guarantee that errno is unchanged on exit compared to its value on
entrance, rather than having to audit for other mistakes like this?

> 
> diff --git a/block.c b/block.c
> index 58efb5b..0e96a22 100644
> --- a/block.c
> +++ b/block.c
> @@ -1084,8 +1084,8 @@ int bdrv_open(BlockDriverState *bs, const char 
> *filename, QDict *options,
>              snprintf(backing_filename, sizeof(backing_filename),
>                       "%s", filename);
>          } else if (!realpath(filename, backing_filename)) {
> -            error_setg_errno(errp, errno, "Could not resolve path '%s'", 
> filename);
>              ret = -errno;
> +            error_setg_errno(errp, errno, "Could not resolve path '%s'", 
> filename);
>              goto fail;
>          }
>  
> 

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]