[Spice-devel] [spice-server 1/2] cursor: Delay release of QXL guest cursor resources

Frediano Ziglio fziglio at redhat.com
Thu Apr 12 09:50:12 UTC 2018


> 
> On Wed, Apr 11, 2018 at 01:24:59PM -0400, Frediano Ziglio wrote:
> > > 
> > > There's an implicit API/ABI contract between QEMU and SPICE that SPICE
> > > will keep the guest QXL resources alive as long as QEMU can hold a
> > > pointer to them. This implicit contract was broken in 1c6e7cf7 "Release
> > > cursor as soon as possible", causing crashes at migration time.
> > > While the proper fix would be in QEMU so that spice-server does not need
> > > to have that kind of knowledge regarding QEMU internal implementation,
> > > this commit reverts to the pre-1c6e7cf7 behaviour to avoid a regression
> > > while QEMU is being fixed.
> > > 
> > > This version of the fix is based on a suggestion from Frediano Ziglio.
> > > 
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1540919
> > > 
> > > Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
> > > ---
> > >  server/red-parse-qxl.c | 3 +++
> > >  server/red-parse-qxl.h | 1 +
> > >  server/red-worker.c    | 2 +-
> > >  3 files changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > > index d0e7eb718..ebd7dcee7 100644
> > > --- a/server/red-parse-qxl.c
> > > +++ b/server/red-parse-qxl.c
> > > @@ -1497,4 +1497,7 @@ void red_put_cursor_cmd(RedCursorCmd *red)
> > >          red_put_cursor(&red->u.set.shape);
> > >          break;
> > >      }
> > > +    if (red->qxl) {
> > > +        red_qxl_release_resource(red->qxl, red->release_info_ext);
> > > +    }
> > >  }
> > 
> > Yes, fix of my code is correct.
> > However I cannot compile without the include!
> > Why is compiling for you? Maybe you have another commit in?
> 
> Yep, my bad, I did not test it independantly of other commits, I
> squashed the missing #include <red-qxl.h> in this commit.
> 
> Christophe
> 

Should not be #include "red-qxl.h" ?

Frediano


More information about the Spice-devel mailing list