All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Fei Li <fli@suse.com>
Cc: qemu-devel@nongnu.org, Fam Zheng <famz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC 1/5] Fix segmentation fault when qemu_signal_init fails
Date: Wed, 28 Nov 2018 13:53:52 +0100	[thread overview]
Message-ID: <87sgzle527.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20181128103308.26755-2-fli@suse.com> (Fei Li's message of "Wed, 28 Nov 2018 18:33:04 +0800")

Fei Li <fli@suse.com> writes:

> When qemu_signal_init() fails in qemu_init_main_loop(), we return
> without setting an error.  Its callers crash then when they try to
> report the error with error_report_err().

Yes, that's a bug.  Broken in 2f78e491d7b, v2.2.0.  Has escaped notice
since qemu_signalfd() is quite unlikely to fail.  Could go into 3.1 as a
bug fix, but I think punting it to the next release is just fine.

> To avoid such segmentation fault, add a new Error parameter to make
> the call trace to propagate the err to the final caller.
>

Let's add:

  Fixes: 2f78e491d7b46542158ce0b8132ee4e05bc0ade4

> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Fam Zheng <famz@redhat.com>
> Signed-off-by: Fei Li <fli@suse.com>
> Reviewed-by: Fam Zheng <famz@redhat.com>
> ---
>  util/main-loop.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/util/main-loop.c b/util/main-loop.c
> index affe0403c5..443cb4cfe8 100644
> --- a/util/main-loop.c
> +++ b/util/main-loop.c
> @@ -71,7 +71,7 @@ static void sigfd_handler(void *opaque)
>      }
>  }
>  
> -static int qemu_signal_init(void)
> +static int qemu_signal_init(Error **errp)
>  {
>      int sigfd;
>      sigset_t set;
> @@ -96,7 +96,7 @@ static int qemu_signal_init(void)
>      sigdelset(&set, SIG_IPI);
>      sigfd = qemu_signalfd(&set);
>      if (sigfd == -1) {
> -        fprintf(stderr, "failed to create signalfd\n");
> +        error_setg_errno(errp, errno, "failed to create signalfd");
>          return -errno;
>      }
>  
> @@ -109,7 +109,7 @@ static int qemu_signal_init(void)
>  
>  #else /* _WIN32 */
>  
> -static int qemu_signal_init(void)
> +static int qemu_signal_init(Error **errp)
>  {
>      return 0;
>  }
> @@ -148,7 +148,7 @@ int qemu_init_main_loop(Error **errp)
>  
>      init_clocks(qemu_timer_notify_cb);
>  
> -    ret = qemu_signal_init();
> +    ret = qemu_signal_init(errp);
>      if (ret) {
>          return ret;
>      }

Reviewed-by: Markus Armbruster <armbru@redhat.com>

  reply	other threads:[~2018-11-28 12:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-28 10:33 [Qemu-devel] [PATCH RFC 0/5] fix some segmentation faults and migration issues Fei Li
2018-11-28 10:33 ` [Qemu-devel] [PATCH RFC 1/5] Fix segmentation fault when qemu_signal_init fails Fei Li
2018-11-28 12:53   ` Markus Armbruster [this message]
2018-11-29  6:16     ` Fei Li
2018-11-29  8:35       ` Markus Armbruster
2018-11-29  9:15         ` Fei Li
2018-11-28 10:33 ` [Qemu-devel] [PATCH RFC 2/5] qemu_thread_join: fix segmentation fault Fei Li
2018-11-29 14:32   ` Philippe Mathieu-Daudé
2018-11-30 11:38     ` Fei Li
2018-11-28 10:33 ` [Qemu-devel] [PATCH RFC 3/5] migration: fix the multifd code when receiving less channels Fei Li
2018-11-28 12:17   ` Peter Xu
2018-11-28 10:33 ` [Qemu-devel] [PATCH RFC 4/5] migration: remove unused &local_err parameter in multifd_save_cleanup Fei Li
2018-11-28 10:33 ` [Qemu-devel] [PATCH RFC 5/5] migration: add more error handling for postcopy_ram_enable_notify Fei Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sgzle527.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=famz@redhat.com \
    --cc=fli@suse.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.