* [PATCH] Fix segfault during NBD iotest 083 @ 2021-02-12 11:16 Jagannathan Raman 2021-02-12 11:16 ` [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault Jagannathan Raman 0 siblings, 1 reply; 6+ messages in thread From: Jagannathan Raman @ 2021-02-12 11:16 UTC (permalink / raw) To: berrange; +Cc: elena.ufimtseva, stefanha, qemu-devel Hi, The patch fixes a segfault issue. error_prepend() in qio_channel_readv_full_all() sets a NULL *errp when ret is 0. We ran the following tests with this patch and they all passed: - cd tests/qemu-iotests && ./check -nbd 083 - make check - make check-iotests - CI using Travis. We also kicked off gitlab CI, but didn't hear anything back from the server Jagannathan Raman (1): io: error_prepend() in qio_channel_readv_full_all() causes segfault io/channel.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault 2021-02-12 11:16 [PATCH] Fix segfault during NBD iotest 083 Jagannathan Raman @ 2021-02-12 11:16 ` Jagannathan Raman 2021-02-12 11:16 ` Daniel P. Berrangé 0 siblings, 1 reply; 6+ messages in thread From: Jagannathan Raman @ 2021-02-12 11:16 UTC (permalink / raw) To: berrange; +Cc: elena.ufimtseva, stefanha, qemu-devel 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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault 2021-02-12 11:16 ` [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault Jagannathan Raman @ 2021-02-12 11:16 ` Daniel P. Berrangé 2021-02-12 11:41 ` Jag Raman 0 siblings, 1 reply; 6+ messages in thread From: Daniel P. Berrangé @ 2021-02-12 11:16 UTC (permalink / raw) To: Jagannathan Raman; +Cc: elena.ufimtseva, stefanha, qemu-devel 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 :| ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault 2021-02-12 11:16 ` Daniel P. Berrangé @ 2021-02-12 11:41 ` Jag Raman 2021-02-12 13:08 ` Eric Blake 0 siblings, 1 reply; 6+ messages in thread From: Jag Raman @ 2021-02-12 11:41 UTC (permalink / raw) To: Daniel P. Berrangé, Peter Maydell Cc: Elena Ufimtseva, stefanha@gmail.com, qemu-devel@nongnu.org > 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 :| ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault 2021-02-12 11:41 ` Jag Raman @ 2021-02-12 13:08 ` Eric Blake 2021-02-12 13:13 ` Jag Raman 0 siblings, 1 reply; 6+ messages in thread From: Eric Blake @ 2021-02-12 13:08 UTC (permalink / raw) To: Jag Raman, Daniel P. Berrangé, Peter Maydell Cc: Elena Ufimtseva, stefanha@gmail.com, qemu-devel@nongnu.org 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault 2021-02-12 13:08 ` Eric Blake @ 2021-02-12 13:13 ` Jag Raman 0 siblings, 0 replies; 6+ messages in thread From: Jag Raman @ 2021-02-12 13:13 UTC (permalink / raw) To: Eric Blake Cc: Elena Ufimtseva, Peter Maydell, Daniel P. Berrangé, qemu-devel@nongnu.org, stefanha@gmail.com > 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-02-12 13:16 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-02-12 11:16 [PATCH] Fix segfault during NBD iotest 083 Jagannathan Raman 2021-02-12 11:16 ` [PATCH] io: error_prepend() in qio_channel_readv_full_all() causes segfault Jagannathan Raman 2021-02-12 11:16 ` Daniel P. Berrangé 2021-02-12 11:41 ` Jag Raman 2021-02-12 13:08 ` Eric Blake 2021-02-12 13:13 ` Jag Raman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).