[Spice-devel] [PATCH] qxl:fix double free surface when create device bitmap failed

Coolper Chen lxchen at tnsoft.com.cn
Thu Dec 9 00:25:24 PST 2010


I'm using qxl master.

GetSurfaceInfo(pdev, surface_id)->u.pdev = pdev;

QXLGetSurface(pdev, phys_mem, size.cx, size.cy, depth,
              &stride, base_mem, allocation_type);
if (!*base_mem) {
   //it executes "goto out_error2" in my windows xp guest.
   goto out_error2;
}

On Thu, 2010-12-09 at 16:15 +0800, Alon Levy wrote:
> On Thu, Dec 09, 2010 at 09:07:23AM +0800, Coolper Chen wrote:
> > DrvCreateDeviceBitmap will call FreeSurface function when
> > CreateDeviceBitmap failed, no need call FreeSurface function in
> > CreateDeviceBitmap function;
> > It fixes the windows XP bluescreen problem that I encounter.
> > 
> > diff --git a/display/surface.c b/display/surface.c
> > index 7146b32..38200aa 100644
> > --- a/display/surface.c
> > +++ b/display/surface.c
> > @@ -152,7 +152,6 @@ HBITMAP CreateDeviceBitmap(PDev *pdev, SIZEL size,
> > ULONG format, QXLPHYSICAL *ph
> >  out_error3:
> >      QXLDelSurface(pdev, *base_mem, allocation_type);
> >  out_error2:
> > -    FreeSurface(pdev, surface_id);
> >      EngDeleteSurface((HSURF)surf);
> >  out_error1:
> >      return 0;
> > 
> 
> Just to be clear, I realize it fixes your bsod, but It seems perhaps that
> the free is being done elsewhere - maybe EngAssociateSurface if it fails
> frees the surface?
> 
> > /Coolper Chen
> > 
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel




More information about the Spice-devel mailing list