rpms/xorg-x11-server/F-13 xserver-1.8.0-resource-accounting.patch, NONE, 1.1 xorg-x11-server.spec, 1.520, 1.521 xserver-1.8.0-glxdri2-resource-conversion.patch, 1.3, 1.4

Owen Taylor otaylor at fedoraproject.org
Sun May 2 14:45:33 UTC 2010


Author: otaylor

Update of /cvs/extras/rpms/xorg-x11-server/F-13
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv4661

Modified Files:
	xorg-x11-server.spec 
	xserver-1.8.0-glxdri2-resource-conversion.patch 
Added Files:
	xserver-1.8.0-resource-accounting.patch 
Log Message:
* Sat May  1 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-11
- Update redirected pixmaps patch fixing several memory leaks
- Add a fix for client resource table corruption
  (More updates from https://bugs.freedesktop.org/show_bug.cgi?id=27767)


xserver-1.8.0-resource-accounting.patch:
 resource.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE xserver-1.8.0-resource-accounting.patch ---
>From 6ad997bce8d6ecc74ffb70f0911b5d7ead03f48e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= <krh at bitplanet.net>
Date: Sat, 1 May 2010 11:36:52 -0400
Subject: [PATCH] Fix resource counting FindResourceByType

When removing resources using FindResourceByType, we need to
update the element count. Failure to do this means that the
reentrancy checks that the number of elements haven't changed
in FindResource and elsewhere don't work.
---
 dix/resource.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/dix/resource.c b/dix/resource.c
index 91d0cfb..aec2a5b 100644
--- a/dix/resource.c
+++ b/dix/resource.c
@@ -589,6 +589,7 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree)
 			      res->value, TypeNameString(res->type));
 #endif		    		    
 		*prev = res->next;
+		clientTable[cid].elements--;
 
 		CallResourceStateCallback(ResourceStateFreeing, res);
 
-- 
1.7.0.1



Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/extras/rpms/xorg-x11-server/F-13/xorg-x11-server.spec,v
retrieving revision 1.520
retrieving revision 1.521
diff -u -p -r1.520 -r1.521
--- xorg-x11-server.spec	30 Apr 2010 23:01:26 -0000	1.520
+++ xorg-x11-server.spec	2 May 2010 14:45:33 -0000	1.521
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.8.0
-Release:   10%{?gitdate:.%{gitdate}}%{dist}
+Release:   11%{?gitdate:.%{gitdate}}%{dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -89,8 +89,12 @@ Patch6053: xserver-1.8-disable-vboxvideo
 Patch6055: xserver-1.7.6-export-dix-functions.patch
 Patch6056: xserver-1.7.6-export-more-dix-functions.patch
 Patch6057: xserver-1.8.0-xorg.conf.d-changes.patch
+# Backports from master
 Patch6058: xserver-1.8.0-swap-fixes.patch
-Patch6059: xserver-1.8.0-glxdri2-resource-conversion.patch
+# https://bugs.freedesktop.org/show_bug.cgi?id=27767 (plus related
+# pieces needed backported from master)
+Patch6059: xserver-1.8.0-resource-accounting.patch
+Patch6060: xserver-1.8.0-glxdri2-resource-conversion.patch
 
 %define moduledir	%{_libdir}/xorg/modules
 %define drimoduledir	%{_libdir}/dri
@@ -532,6 +536,11 @@ rm -rf $RPM_BUILD_ROOT
 %{xserver_source_dir}
 
 %changelog
+* Sat May  1 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-11
+- Update redirected pixmaps patch fixing several memory leaks
+- Add a fix for client resource table corruption
+  (More updates from https://bugs.freedesktop.org/show_bug.cgi?id=27767)
+
 * Fri Apr 30 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-10
 - Updated version of redirected pixmaps patch
   (Again from https://bugs.freedesktop.org/show_bug.cgi?id=27767)

xserver-1.8.0-glxdri2-resource-conversion.patch:
 glx/glxcmds.c             |   60 ++++++++----
 glx/glxdri.c              |    8 +
 glx/glxdri2.c             |   17 +--
 glx/glxdriswrast.c        |    8 +
 glx/glxext.c              |   11 ++
 glx/glxscreens.c          |   28 -----
 glx/glxscreens.h          |    7 -
 hw/xfree86/dri2/dri2.c    |  215 +++++++++++++++++++++++++++-------------------
 hw/xfree86/dri2/dri2.h    |    3 
 hw/xfree86/dri2/dri2ext.c |   24 -----
 include/list.h            |    7 +
 11 files changed, 209 insertions(+), 179 deletions(-)

Index: xserver-1.8.0-glxdri2-resource-conversion.patch
===================================================================
RCS file: /cvs/extras/rpms/xorg-x11-server/F-13/xserver-1.8.0-glxdri2-resource-conversion.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- xserver-1.8.0-glxdri2-resource-conversion.patch	30 Apr 2010 23:01:26 -0000	1.3
+++ xserver-1.8.0-glxdri2-resource-conversion.patch	2 May 2010 14:45:33 -0000	1.4
@@ -1,4 +1,4 @@
-From d4bc0d6eab1390b7e94280b7473291be7bcf7062 Mon Sep 17 00:00:00 2001
+From 69cbca0b83a86ad1ab266314e76304ca4e35f57b Mon Sep 17 00:00:00 2001
 From: Owen Taylor <otaylor at redhat.com>
 Date: Fri, 30 Apr 2010 13:17:18 -0400
 Subject: [PATCH] Merge fixes for DRI drawable handling from master
@@ -21,7 +21,7 @@ Reviewed-by: Michel Dänzer <michel at daen
 https://bugs.freedesktop.org/show_bug.cgi?id=26394
 Signed-off-by: Keith Packard <keithp at keithp.com>
 
-commit 3ff8ba50a6a173bfb6d42dc7e2fd5da4e8706db8
+commit 2b3f755254675933475b068ff20bd322ffb8631f
 Author: Kristian Høgsberg <krh at bitplanet.net>
 Date:   Thu, 29 Apr 2010 16:36:10 -0400
 
@@ -85,21 +85,21 @@ destroyed or the client exits.
 Signed-off-by: Kristian Høgsberg <krh at bitplanet.net>
 Signed-off-by: Keith Packard <keithp at keithp.com>
 ---
- glx/glxcmds.c             |   62 +++++++++-----
+ glx/glxcmds.c             |   60 ++++++++-----
  glx/glxdri.c              |    8 +-
  glx/glxdri2.c             |   17 ++--
  glx/glxdriswrast.c        |    8 +-
  glx/glxext.c              |   11 +++
  glx/glxscreens.c          |   28 ------
  glx/glxscreens.h          |    7 +-
- hw/xfree86/dri2/dri2.c    |  214 +++++++++++++++++++++++++++------------------
+ hw/xfree86/dri2/dri2.c    |  215 +++++++++++++++++++++++++++------------------
  hw/xfree86/dri2/dri2.h    |    3 +-
  hw/xfree86/dri2/dri2ext.c |   24 +-----
  include/list.h            |    6 ++
- 11 files changed, 209 insertions(+), 179 deletions(-)
+ 11 files changed, 209 insertions(+), 178 deletions(-)
 
 diff --git a/glx/glxcmds.c b/glx/glxcmds.c
-index 77afbf4..31a7d32 100644
+index 77afbf4..ec3bbe6 100644
 --- a/glx/glxcmds.c
 +++ b/glx/glxcmds.c
 @@ -161,7 +161,11 @@ validGlxDrawable(ClientPtr client, XID id, int type, int access_mode,
@@ -167,7 +167,7 @@ index 77afbf4..31a7d32 100644
 +    /* Add the glx drawable under the XID of the underlying X drawable
 +     * too.  That way we'll get a callback in DrawableGone and can
 +     * clean up properly when the drawable is destroyed. */
-+    if (pDraw->id != glxDrawableId &&
++    if (drawableId != glxDrawableId &&
 +	!AddResource(pDraw->id, __glXDrawableRes, pGlxDraw)) {
 +	pGlxDraw->destroy (pGlxDraw);
 +	return BadAlloc;
@@ -199,15 +199,6 @@ index 77afbf4..31a7d32 100644
      return err;
  }
  
-@@ -1266,7 +1271,7 @@ static int DoDestroyDrawable(__GLXclientState *cl, XID glxdrawable, int type)
- 			  DixDestroyAccess, &pGlxDraw, &err))
- 	return err;
- 
--    FreeResource(glxdrawable, FALSE);
-+    FreeResourceByType(glxdrawable, __glXDrawableRes, FALSE);
- 
-     return Success;
- }
 @@ -1294,6 +1299,8 @@ DoCreatePbuffer(ClientPtr client, int screenNum, XID fbconfigId,
      PixmapPtr		 pPixmap;
      int			 err;
@@ -471,7 +462,7 @@ index bff4363..861e03c 100644
  
  
 diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
-index 2bdb733..3fd2326 100644
+index 2bdb733..11442d0 100644
 --- a/hw/xfree86/dri2/dri2.c
 +++ b/hw/xfree86/dri2/dri2.c
 @@ -37,6 +37,7 @@
@@ -574,7 +565,7 @@ index 2bdb733..3fd2326 100644
      pPriv->width = pDraw->width;
      pPriv->height = pDraw->height;
      pPriv->buffers = NULL;
-@@ -157,44 +151,130 @@ DRI2CreateDrawable(DrawablePtr pDraw)
+@@ -157,44 +151,131 @@ DRI2CreateDrawable(DrawablePtr pDraw)
      pPriv->swap_limit = 1; /* default to double buffering */
      pPriv->last_swap_msc = 0;
      pPriv->last_swap_ust = 0;
@@ -683,6 +674,7 @@ index 2bdb733..3fd2326 100644
 +	     * unregister the X drawable resource. */
 +	    if (!DRI2LookupDrawableRef(pPriv, ref->id))
 +		FreeResourceByType(ref->id, dri2DrawableRes, TRUE);
++	    free(ref);
 +	    break;
 +	}
 +
@@ -721,7 +713,7 @@ index 2bdb733..3fd2326 100644
  }
  
  static int
-@@ -505,10 +585,6 @@ DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame,
+@@ -505,10 +586,6 @@ DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame,
  
      pPriv->blockedClient = NULL;
      pPriv->blockedOnMsc = FALSE;
@@ -732,7 +724,7 @@ index 2bdb733..3fd2326 100644
  }
  
  static void
-@@ -576,13 +652,6 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
+@@ -576,13 +653,6 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
      pPriv->last_swap_ust = ust;
  
      DRI2WakeClient(client, pDraw, frame, tv_sec, tv_usec);
@@ -746,7 +738,7 @@ index 2bdb733..3fd2326 100644
  }
  
  Bool
-@@ -750,7 +819,7 @@ DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
+@@ -750,7 +820,7 @@ DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
      Bool ret;
  
      pPriv = DRI2GetDrawable(pDraw);
@@ -755,7 +747,7 @@ index 2bdb733..3fd2326 100644
  	return BadDrawable;
  
      /* Old DDX just completes immediately */
-@@ -774,7 +843,7 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
+@@ -774,7 +844,7 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
      DRI2DrawablePtr pPriv;
  
      pPriv = DRI2GetDrawable(pDraw);
@@ -764,7 +756,7 @@ index 2bdb733..3fd2326 100644
  	return BadDrawable;
  
      /* target_sbc == 0 means to block until all pending swaps are
-@@ -800,36 +869,6 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
+@@ -800,36 +870,6 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
      return Success;
  }
  
@@ -801,7 +793,7 @@ index 2bdb733..3fd2326 100644
  Bool
  DRI2HasSwapControl(ScreenPtr pScreen)
  {
-@@ -890,6 +929,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
+@@ -890,6 +930,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
      if (!ds)
  	return FALSE;
  
@@ -809,7 +801,7 @@ index 2bdb733..3fd2326 100644
      ds->fd	       = info->fd;
      ds->deviceName     = info->deviceName;
      dri2_major         = 1;
-@@ -961,6 +1001,8 @@ DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin)
+@@ -961,6 +1002,8 @@ DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin)
  {
      static Bool setupDone = FALSE;
  



More information about the scm-commits mailing list