Hello community, here is the log from the commit of package xorg-x11-server for openSUSE:Factory checked in at 2012-07-18 17:53:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old) and /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes 2012-07-10 14:18:15.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes 2012-07-18 17:53:14.000000000 +0200 @@ -1,0 +2,15 @@ +Tue Jul 17 01:42:30 UTC 2012 - [email protected] + +- renamed patches of previous change according to our policy + u_* --> U_* (since these were rebased on upstream patches) + +------------------------------------------------------------------- +Fri Jul 13 00:19:59 UTC 2012 - [email protected] + +- Add patches u_dri2_add_DRI2CreateDrawable2.patch and + u_0012-glx_Free_reference_to_destroyed_GLX_drawable.patch to fix + seemingly random crashes of the X stack [bnc#769553]; patches + came from upstream git commits, and were rebased to apply to + present version cleanly. + +------------------------------------------------------------------- New: ---- U_dri2_add_DRI2CreateDrawable2.patch U_glx_Free_reference_to_destroyed_GLX_drawable.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-server.spec ++++++ --- /var/tmp/diff_new_pack.ELWfft/_old 2012-07-18 17:53:21.000000000 +0200 +++ /var/tmp/diff_new_pack.ELWfft/_new 2012-07-18 17:53:21.000000000 +0200 @@ -184,6 +184,8 @@ Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch # PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines Patch222: sync-fix.patch +Patch223: U_glx_Free_reference_to_destroyed_GLX_drawable.patch +Patch224: U_dri2_add_DRI2CreateDrawable2.patch # Patches to implement GLX_ARB_create_context extensions required for OpenGL 3.0 support # http://lists.x.org/archives/xorg-devel/2012-April/030452.html # git://people.freedesktop.org/~idr/xserver.git @@ -320,6 +322,8 @@ ### Disable backtrace generation patch for now #%patch220 -p1 %patch222 -p1 +%patch223 -p1 +%patch224 -p1 %patch300 -p1 %patch301 -p1 %patch302 -p1 ++++++ U_dri2_add_DRI2CreateDrawable2.patch ++++++ >From 8a87acc9e57be740e3bd252567622246051a0723 Mon Sep 17 00:00:00 2001 From: Michel Dänzer <[email protected]> Date: Thu, 12 Jul 2012 11:16:36 +0000 Subject: dri2: Add DRI2CreateDrawable2. Same as DRI2CreateDrawable, except it can return the DRI2 specific XID of the DRI2 drawable reference to the base drawable. Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Kristian Høgsberg <[email protected]> Signed-off-by: Keith Packard <[email protected]> --- Index: xorg-server-1.12.3/hw/xfree86/dri2/dri2.c =================================================================== --- xorg-server-1.12.3.orig/hw/xfree86/dri2/dri2.c +++ xorg-server-1.12.3/hw/xfree86/dri2/dri2.c @@ -280,8 +280,9 @@ DRI2AddDrawableRef(DRI2DrawablePtr pPriv } int -DRI2CreateDrawable(ClientPtr client, DrawablePtr pDraw, XID id, - DRI2InvalidateProcPtr invalidate, void *priv) +DRI2CreateDrawable2(ClientPtr client, DrawablePtr pDraw, XID id, + DRI2InvalidateProcPtr invalidate, void *priv, + XID *dri2_id_out) { DRI2DrawablePtr pPriv; XID dri2_id; @@ -298,9 +299,19 @@ DRI2CreateDrawable(ClientPtr client, Dra if (rc != Success) return rc; + if (dri2_id_out) + *dri2_id_out = dri2_id; + return Success; } +int +DRI2CreateDrawable(ClientPtr client, DrawablePtr pDraw, XID id, + DRI2InvalidateProcPtr invalidate, void *priv) +{ + return DRI2CreateDrawable2(client, pDraw, id, invalidate, priv, NULL); +} + static int DRI2DrawableGone(pointer p, XID id) { Index: xorg-server-1.12.3/hw/xfree86/dri2/dri2.h =================================================================== --- xorg-server-1.12.3.orig/hw/xfree86/dri2/dri2.h +++ xorg-server-1.12.3/hw/xfree86/dri2/dri2.h @@ -237,6 +237,13 @@ extern _X_EXPORT int DRI2CreateDrawable( extern _X_EXPORT void DRI2DestroyDrawable(DrawablePtr pDraw); +extern _X_EXPORT int DRI2CreateDrawable2(ClientPtr client, + DrawablePtr pDraw, + XID id, + DRI2InvalidateProcPtr invalidate, + void *priv, + XID *dri2_id_out); + extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, ++++++ U_glx_Free_reference_to_destroyed_GLX_drawable.patch ++++++ >From a2d0829531249e24dbca25fc20ed30a2bb2d8ed8 Mon Sep 17 00:00:00 2001 From: Michel Dänzer <[email protected]> Date: Thu, 12 Jul 2012 11:16:37 +0000 Subject: glx: Free DRI2 drawable reference to destroyed GLX drawable. Otherwise the reference can lead to use after free in __glXDRIinvalidateBuffers(). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50019 Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Kristian Høgsberg <[email protected]> Signed-off-by: Keith Packard <[email protected]> --- Index: xorg-server-1.12.3/glx/glxdri2.c =================================================================== --- xorg-server-1.12.3.orig/glx/glxdri2.c +++ xorg-server-1.12.3/glx/glxdri2.c @@ -96,6 +96,7 @@ struct __GLXDRIdrawable { int height; __DRIbuffer buffers[MAX_DRAWABLE_BUFFERS]; int count; + XID dri2_id; }; static void @@ -104,6 +105,8 @@ __glXDRIdrawableDestroy(__GLXdrawable * __GLXDRIdrawable *private = (__GLXDRIdrawable *) drawable; const __DRIcoreExtension *core = private->screen->core; + FreeResource(private->dri2_id, FALSE); + (*core->destroyDrawable) (private->driDrawable); __glXDrawableRelease(drawable); @@ -597,8 +600,9 @@ __glXDRIscreenCreateDrawable(ClientPtr c private->base.waitGL = __glXDRIdrawableWaitGL; private->base.waitX = __glXDRIdrawableWaitX; - if (DRI2CreateDrawable(client, pDraw, drawId, - __glXDRIinvalidateBuffers, private)) { + if (DRI2CreateDrawable2(client, pDraw, drawId, + __glXDRIinvalidateBuffers, private, + &private->dri2_id)) { free(private); return NULL; } -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
