io/channel.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Using error_prepend() in qio_channel_readv_full_all() causes a segfault
as errp is not set when ret is 0. This results in the failure of iotest
83. Replacing with error_setg() fixes the problem.
Additionally, removes a full stop at the end of error message
Reported-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
---
io/channel.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/io/channel.c b/io/channel.c
index 4555021..e8b019d 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -202,8 +202,7 @@ int qio_channel_readv_full_all(QIOChannel *ioc,
int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, errp);
if (ret == 0) {
- error_prepend(errp,
- "Unexpected end-of-file before all data were read.");
+ error_setg(errp, "Unexpected end-of-file before all data were read");
return -1;
}
if (ret == 1) {
--
1.8.3.1
On Fri, Feb 12, 2021 at 06:16:07AM -0500, Jagannathan Raman wrote:
> Using error_prepend() in qio_channel_readv_full_all() causes a segfault
> as errp is not set when ret is 0. This results in the failure of iotest
> 83. Replacing with error_setg() fixes the problem.
>
> Additionally, removes a full stop at the end of error message
>
> Reported-by: Max Reitz <mreitz@redhat.com>
> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
> ---
> io/channel.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/io/channel.c b/io/channel.c
> index 4555021..e8b019d 100644
> --- a/io/channel.c
> +++ b/io/channel.c
> @@ -202,8 +202,7 @@ int qio_channel_readv_full_all(QIOChannel *ioc,
> int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, errp);
>
> if (ret == 0) {
> - error_prepend(errp,
> - "Unexpected end-of-file before all data were read.");
> + error_setg(errp, "Unexpected end-of-file before all data were read");
> return -1;
> }
> if (ret == 1) {
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
> On Feb 12, 2021, at 6:16 AM, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Fri, Feb 12, 2021 at 06:16:07AM -0500, Jagannathan Raman wrote:
>> Using error_prepend() in qio_channel_readv_full_all() causes a segfault
>> as errp is not set when ret is 0. This results in the failure of iotest
>> 83. Replacing with error_setg() fixes the problem.
>>
>> Additionally, removes a full stop at the end of error message
>>
>> Reported-by: Max Reitz <mreitz@redhat.com>
>> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
>> ---
>> io/channel.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/io/channel.c b/io/channel.c
>> index 4555021..e8b019d 100644
>> --- a/io/channel.c
>> +++ b/io/channel.c
>> @@ -202,8 +202,7 @@ int qio_channel_readv_full_all(QIOChannel *ioc,
>> int ret = qio_channel_readv_full_all_eof(ioc, iov, niov, fds, nfds, errp);
>>
>> if (ret == 0) {
>> - error_prepend(errp,
>> - "Unexpected end-of-file before all data were read.");
>> + error_setg(errp, "Unexpected end-of-file before all data were read");
>> return -1;
>> }
>> if (ret == 1) {
>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Thank you for reviewing, Daniel! I recall that you warned about
error_prepend() during the review, somehow slipped through.
Hi Peter,
Could we send a PULL request for this patch?
Thank you!
--
Jag
>
>
> Regards,
> Daniel
> --
> |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org -o- https://fstop138.berrange.com :|
> |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 2/12/21 5:41 AM, Jag Raman wrote: > > >> On Feb 12, 2021, at 6:16 AM, Daniel P. Berrangé <berrange@redhat.com> wrote: >> >> On Fri, Feb 12, 2021 at 06:16:07AM -0500, Jagannathan Raman wrote: >>> Using error_prepend() in qio_channel_readv_full_all() causes a segfault >>> as errp is not set when ret is 0. This results in the failure of iotest >>> 83. Replacing with error_setg() fixes the problem. >>> >>> Additionally, removes a full stop at the end of error message >>> >>> Reported-by: Max Reitz <mreitz@redhat.com> >>> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com> >>> --- >>> io/channel.c | 3 +-- >>> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > > Thank you for reviewing, Daniel! I recall that you warned about > error_prepend() during the review, somehow slipped through. > > Hi Peter, > > Could we send a PULL request for this patch? I'm bundling up a pull request for my NBD tree, and will include this one. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
> On Feb 12, 2021, at 8:08 AM, Eric Blake <eblake@redhat.com> wrote: > > On 2/12/21 5:41 AM, Jag Raman wrote: >> >> >>> On Feb 12, 2021, at 6:16 AM, Daniel P. Berrangé <berrange@redhat.com> wrote: >>> >>> On Fri, Feb 12, 2021 at 06:16:07AM -0500, Jagannathan Raman wrote: >>>> Using error_prepend() in qio_channel_readv_full_all() causes a segfault >>>> as errp is not set when ret is 0. This results in the failure of iotest >>>> 83. Replacing with error_setg() fixes the problem. >>>> >>>> Additionally, removes a full stop at the end of error message >>>> >>>> Reported-by: Max Reitz <mreitz@redhat.com> >>>> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com> >>>> --- >>>> io/channel.c | 3 +-- >>>> 1 file changed, 1 insertion(+), 2 deletions(-) > >>> >>> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> >> >> Thank you for reviewing, Daniel! I recall that you warned about >> error_prepend() during the review, somehow slipped through. >> >> Hi Peter, >> >> Could we send a PULL request for this patch? > > I'm bundling up a pull request for my NBD tree, and will include this one. Thank you very much, Eric! :) > > -- > Eric Blake, Principal Software Engineer > Red Hat, Inc. +1-919-301-3226 > Virtualization: qemu.org | libvirt.org
© 2016 - 2025 Red Hat, Inc.