[Spice-devel] [spice-server 04/10] qxl: Fix guest resources release in red_put_drawable()

Christophe Fergeau cfergeau at redhat.com
Mon Apr 16 12:35:22 UTC 2018


On Mon, Apr 16, 2018 at 07:25:19AM -0400, Frediano Ziglio wrote:
> > 
> > At the moment, we'll unconditionally release the guest QXL resources in
> > red_put_drawable() even if red_get_drawable() failed and did not
> > initialize drawable->release_info_ext properly.
> > This commit checks the QXLReleaseInfo in release_info_ext is non-0
> > before attempting to release it.
> > ---
> >  server/red-parse-qxl.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > index dc99d1f30..80746ecbb 100644
> > --- a/server/red-parse-qxl.c
> > +++ b/server/red-parse-qxl.c
> > @@ -1504,7 +1504,9 @@ void red_drawable_unref(RedDrawable *red_drawable)
> >      if (--red_drawable->refs) {
> >          return;
> >      }
> > -    red_qxl_release_resource(red_drawable->qxl,
> > red_drawable->release_info_ext);
> > +    if (red_drawable->release_info_ext.info != NULL) {
> > +        red_qxl_release_resource(red_drawable->qxl,
> > red_drawable->release_info_ext);
> > +    }
> >      red_put_drawable(red_drawable);
> >      g_free(red_drawable);
> >  }
> 
> Would not be better not calling red_qxl_release_resource from red_put_drawable and check
> red->qxl instead of red_drawable->release_info_ext.info != NULL like all other calls?

This would need a bit more changes as red_get_drawable() does not have
a QXLInstance argument, I'll try to add one.

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180416/8b770d24/attachment.sig>


More information about the Spice-devel mailing list