debian/changelog | 12 + debian/control | 3 debian/patches/108_fix_leaks_dri2_screen_creation.patch | 107 ++++++++++++++++ debian/patches/series | 1 4 files changed, 122 insertions(+), 1 deletion(-)
New commits: commit 54e088badb0198655936440091ad8f5fd860aaa0 Author: Bryce Harrington <br...@canonical.com> Date: Mon Feb 14 16:03:50 2011 -0800 Bump diff --git a/debian/changelog b/debian/changelog index cac8fe3..eff1c45 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,8 +5,10 @@ mesa (7.10-1ubuntu2) natty; urgency=low applications to fail with error, "BadLength (poly request too large or internal Xlib length". (LP: #714280) + * Change dep on libudev-dev to not limit to linux-any (fixes FTBS when + using pbuilder, see deb bug 600823) - -- Bryce Harrington <br...@ubuntu.com> Mon, 14 Feb 2011 11:32:25 -0800 + -- Bryce Harrington <br...@ubuntu.com> Mon, 14 Feb 2011 11:44:22 -0800 mesa (7.10-1ubuntu1) natty; urgency=lowe diff --git a/debian/control b/debian/control index 48c4f73..cc355dc 100644 --- a/debian/control +++ b/debian/control @@ -12,7 +12,8 @@ Build-Depends: debhelper (>= 7.2.7), quilt (>= 0.40), pkg-config, libxdamage-dev, libxext-dev, autoconf, automake, x11proto-dri2-dev (>= 2.1), linux-libc-dev (>= 2.6.31) [linux-any], libx11-xcb-dev, libxcb-dri2-0-dev, libxcb-xfixes0-dev, python-libxml2, - libtalloc-dev, libudev-dev [linux-any], +# libtalloc-dev, libudev-dev [linux-any], + libtalloc-dev, libudev-dev, Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/mesa Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/mesa.git Homepage: http://mesa3d.sourceforge.net/ commit 5e6e8ebf658714712f496f941a38946c1d1cdc6a Author: Bryce Harrington <br...@canonical.com> Date: Mon Feb 14 11:35:22 2011 -0800 Add 108_fix_leaks_dri2_screen_creation.patch: Cherrypick from upstream to fix leaks in DRI2 screen creation error paths, which causes Clutter applications to fail with error, "BadLength (poly request too large or internal Xlib length". (LP: #714280) diff --git a/debian/changelog b/debian/changelog index dbac118..cac8fe3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +mesa (7.10-1ubuntu2) natty; urgency=low + + * Add 108_fix_leaks_dri2_screen_creation.patch: Cherrypick from upstream + to fix leaks in DRI2 screen creation error paths, which causes Clutter + applications to fail with error, "BadLength (poly request too large or + internal Xlib length". + (LP: #714280) + + -- Bryce Harrington <br...@ubuntu.com> Mon, 14 Feb 2011 11:32:25 -0800 + mesa (7.10-1ubuntu1) natty; urgency=lowe * Merge from Debian experimental. Remaining Ubuntu changes: diff --git a/debian/patches/108_fix_leaks_dri2_screen_creation.patch b/debian/patches/108_fix_leaks_dri2_screen_creation.patch new file mode 100644 index 0000000..6f5b7a7 --- /dev/null +++ b/debian/patches/108_fix_leaks_dri2_screen_creation.patch @@ -0,0 +1,107 @@ +From bfc889517ad0d490cce1817eecac146d66bcd923 Mon Sep 17 00:00:00 2001 +From: Henri Verbeet <hverb...@gmail.com> +Date: Sat, 29 Jan 2011 23:00:48 +0000 +Subject: glx: Fix leaks in DRI2 screen creation error paths. + +Signed-off-by: Brian Paul <bri...@vmware.com> +--- +diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c +index 75b1a10..ab7915c 100644 +--- a/src/glx/dri2_glx.c ++++ b/src/glx/dri2_glx.c +@@ -804,11 +804,14 @@ dri2CreateScreen(int screen, struct glx_display * priv) + return NULL; + + memset(psc, 0, sizeof *psc); +- if (!glx_screen_init(&psc->base, screen, priv)) +- return NULL; ++ if (!glx_screen_init(&psc->base, screen, priv)) { ++ Xfree(psc); ++ return NULL; ++ } + + if (!DRI2Connect(priv->dpy, RootWindow(priv->dpy, screen), + &driverName, &deviceName)) { ++ glx_screen_cleanup(&psc->base); + XFree(psc); + return NULL; + } +@@ -918,12 +921,15 @@ dri2CreateScreen(int screen, struct glx_display * priv) + return &psc->base; + + handle_error: ++ if (psc->fd) ++ close(psc->fd); ++ if (psc->driver) ++ dlclose(psc->driver); + Xfree(driverName); + Xfree(deviceName); ++ glx_screen_cleanup(&psc->base); + XFree(psc); + +- /* FIXME: clean up here */ +- + return NULL; + } + +diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h +index 36a0808..fdcef80 100644 +--- a/src/glx/glxclient.h ++++ b/src/glx/glxclient.h +@@ -585,6 +585,8 @@ struct glx_display + extern int + glx_screen_init(struct glx_screen *psc, + int screen, struct glx_display * priv); ++extern void ++glx_screen_cleanup(struct glx_screen *psc); + + #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + extern __GLXDRIdrawable * +diff --git a/src/glx/glxext.c b/src/glx/glxext.c +index c75c9bf..25d266e 100644 +--- a/src/glx/glxext.c ++++ b/src/glx/glxext.c +@@ -194,17 +194,7 @@ FreeScreenConfigs(struct glx_display * priv) + screens = ScreenCount(priv->dpy); + for (i = 0; i < screens; i++) { + psc = priv->screens[i]; +- if (psc->configs) { +- glx_config_destroy_list(psc->configs); +- if (psc->effectiveGLXexts) +- Xfree(psc->effectiveGLXexts); +- psc->configs = NULL; /* NOTE: just for paranoia */ +- } +- if (psc->visuals) { +- glx_config_destroy_list(psc->visuals); +- psc->visuals = NULL; /* NOTE: just for paranoia */ +- } +- Xfree((char *) psc->serverGLXexts); ++ glx_screen_cleanup(psc); + + #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + if (psc->driScreen) { +@@ -728,6 +718,22 @@ glx_screen_init(struct glx_screen *psc, + return GL_TRUE; + } + ++_X_HIDDEN void ++glx_screen_cleanup(struct glx_screen *psc) ++{ ++ if (psc->configs) { ++ glx_config_destroy_list(psc->configs); ++ if (psc->effectiveGLXexts) ++ Xfree(psc->effectiveGLXexts); ++ psc->configs = NULL; /* NOTE: just for paranoia */ ++ } ++ if (psc->visuals) { ++ glx_config_destroy_list(psc->visuals); ++ psc->visuals = NULL; /* NOTE: just for paranoia */ ++ } ++ Xfree((char *) psc->serverGLXexts); ++} ++ + /* + ** Allocate the memory for the per screen configs for each screen. + ** If that works then fetch the per screen configs data. +-- +cgit v0.8.3-6-g21f6 diff --git a/debian/patches/series b/debian/patches/series index aa5b52a..ab4131f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -11,3 +11,4 @@ 103_savage-expose_fbmodes_with_nonzero_alpha.patch 105_use_shared_libdricore.patch 107_winsys_buffer_nullptr.patch +108_fix_leaks_dri2_screen_creation.patch -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1pp8ot-0003cb...@alioth.debian.org