qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 4/6] monitor: check if chardev can switch gco


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH v3 4/6] monitor: check if chardev can switch gcontext for OOB
Date: Wed, 5 Dec 2018 12:54:45 +0400

Hi

On Wed, Dec 5, 2018 at 12:43 PM Markus Armbruster <address@hidden> wrote:
>
> Marc-André Lureau <address@hidden> writes:
>
> > Not all backends are able to switch gcontext. Those backends cannot
> > drive a OOB monitor (the monitor would then be blocking on main
> > thread).
> >
> > For example, ringbuf, spice, or more esoteric input chardevs like
> > braille or MUX.
> >
> > We currently forbid MUX because not all frontends are ready to run
> > outside main loop. Extend to add a context-switching feature check.
> >
> > Signed-off-by: Marc-André Lureau <address@hidden>
> > ---
> >  monitor.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/monitor.c b/monitor.c
> > index 79afe99079..25cf4223e8 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -4562,9 +4562,11 @@ void monitor_init(Chardev *chr, int flags)
> >      bool use_oob = flags & MONITOR_USE_OOB;
> >
> >      if (use_oob) {
> > -        if (CHARDEV_IS_MUX(chr)) {
> > +        if (CHARDEV_IS_MUX(chr) ||
> > +            !qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_GCONTEXT)) {
> >              error_report("Monitor out-of-band is not supported with "
> > -                         "MUX typed chardev backend");
> > +                         "%s typed chardev backend",
> > +                         object_get_typename(OBJECT(chr)));
> >              exit(1);
> >          }
> >          if (use_readline) {
>
> Aha, this answers my question on the previous patch: yes, it is possible
> to trip the new assertion.
>
> Are there any ways other than this one?

Good question, if there are, we have latent bugs if switching gcontext
on a non-capable chardev.

Doing a quick review of qemu_chr_fe_set_handlers() for context != NULL
reveals net/colo-compare.c:

I think we should have the capability check added to find_and_check_chardev().

I don't see other candidates. Considering the problem is pre-existing,
I can either update the patch or add a follow-up patch.

>
> We could squash the two patches.  But I figure you kept the previous
> patch separate on purpose.  That's okay, but it should mention the
> assertion can be tripped, and the next patch (this one) will fix it.
>


-- 
Marc-André Lureau



reply via email to

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