xorg-server: Changes to 'ubuntu'
debian/changelog | 14 ++
debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch | 63 ++++------
debian/patches/config-add-no-removal.patch | 30 ++++
debian/patches/series | 1
4 files changed, 71 insertions(+), 37 deletions(-)
New commits:
commit 8d4aa081a977bd4cc523998361e7edc233da1367
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Thu Mar 21 13:43:51 2013 +0100
Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
* Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
- Unbind offload sink and render slave simultaneously.
This prevents a use-after-free bug.
* Add config-add-no-removal.patch (LP: #1157614)
- Do not call device_remove when a device is hotplugged.
* Refresh drm_device_keep_trying.patch
- There is no need for drm master here. This might
reopen LP #982889, but I do not think spinning here
:is the correct answer.
diff --git a/debian/changelog b/debian/changelog
index dd234da..60017d8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+xorg-server (2:1.13.3-0ubuntu3) UNRELEASED; urgency=low
+
+ * Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
+ - Unbind offload sink and render slave simultaneously.
+ This prevents a use-after-free bug.
+ * Add config-add-no-removal.patch (LP: #1157614)
+ - Do not call device_remove when a device is hotplugged.
+ * Refresh drm_device_keep_trying.patch
+ - There is no need for drm master here. This might
+ reopen LP #982889, but I do not think spinning here
+ :is the correct answer.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Wed, 20 Mar 2013 15:36:15 +0000
+
xorg-server (2:1.13.3-0ubuntu2) raring; urgency=low
* Add patch to improve backtraces in the Xorg log.
diff --git a/debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch b/debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
index 2fc9c8c..b20ae31 100644
--- a/debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
+++ b/debian/patches/autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
@@ -16,8 +16,6 @@ This lets the gnome applet update if a usb device appears/disappears
randr/rrscreen.c | 2 +-
9 files changed, 40 insertions(+), 7 deletions(-)
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 057b5b6..197bde8 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -47,6 +47,7 @@
@@ -28,7 +26,7 @@ index 057b5b6..197bde8 100644
int platformSlotClaimed;
int xf86_num_platform_devices;
-@@ -462,7 +463,8 @@ xf86platformAddDevice(int index)
+@@ -470,7 +471,8 @@
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
@@ -38,7 +36,7 @@ index 057b5b6..197bde8 100644
return 0;
}
-@@ -500,12 +502,13 @@ xf86platformRemoveDevice(int index)
+@@ -508,12 +510,13 @@
xf86GPUScreens[i]->pScreen->CloseScreen(xf86GPUScreens[i]->pScreen);
RemoveGPUScreen(xf86GPUScreens[i]->pScreen);
@@ -53,11 +51,9 @@ index 057b5b6..197bde8 100644
out:
return;
}
-diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
-index 1263dd7..263a1dc 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
-@@ -3346,6 +3346,7 @@ void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master)
+@@ -3283,6 +3283,7 @@
unbound = TRUE;
AttachOffloadGPU(master->pScreen, pScrn->pScreen);
slave_config->randr_provider->offload_sink = master_provider;
@@ -65,35 +61,41 @@ index 1263dd7..263a1dc 100644
}
if ((master->capabilities & RR_Capability_SourceOutput) &&
pScrn->capabilities & RR_Capability_SinkOutput) {
-@@ -3354,5 +3355,6 @@ void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master)
+@@ -3291,5 +3292,6 @@
DetachUnboundGPU(pScrn->pScreen);
AttachOutputGPU(master->pScreen, pScrn->pScreen);
slave_config->randr_provider->output_source = master_provider;
+ RRSetChanged(master->pScreen);
}
}
-diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
-index 01fc9c5..9d96c4f 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
-@@ -1895,10 +1895,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
+@@ -1893,15 +1893,20 @@
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ if (config->randr_provider == provider) {
++ BOOL detached = FALSE;
if (config->randr_provider->offload_sink) {
DetachOffloadGPU(screen);
config->randr_provider->offload_sink = NULL;
-+ RRSetChanged(screen);
++ RRSetChanged(screen);
++ detached = TRUE;
}
- else if (config->randr_provider->output_source) {
+- else if (config->randr_provider->output_source) {
++ if (config->randr_provider->output_source) {
DetachOutputGPU(screen);
config->randr_provider->output_source = NULL;
-+ RRSetChanged(screen);
++ RRSetChanged(screen);
++ detached = TRUE;
}
- else if (screen->current_master)
+- else if (screen->current_master)
++ if (!detached && screen->current_master)
DetachUnboundGPU(screen);
-diff --git a/randr/randr.c b/randr/randr.c
-index f0decfc..2aebe29 100644
+ }
+ config->randr_provider = NULL;
--- a/randr/randr.c
+++ b/randr/randr.c
-@@ -464,6 +464,28 @@ TellChanged(WindowPtr pWin, pointer value)
+@@ -464,6 +464,28 @@
return WT_WALKCHILDREN;
}
@@ -122,7 +124,7 @@ index f0decfc..2aebe29 100644
/*
* Something changed; send events and adjust pointer position
*/
-@@ -484,7 +506,7 @@ RRTellChanged(ScreenPtr pScreen)
+@@ -484,7 +506,7 @@
mastersp = pScrPriv;
}
@@ -131,11 +133,9 @@ index f0decfc..2aebe29 100644
UpdateCurrentTimeIf();
if (mastersp->configChanged) {
mastersp->lastConfigTime = currentTime;
-diff --git a/randr/randrstr.h b/randr/randrstr.h
-index 55faaed..73132e3 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
-@@ -486,6 +486,10 @@ extern _X_EXPORT void
+@@ -486,6 +486,10 @@
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
/* randr.c */
@@ -146,11 +146,9 @@ index 55faaed..73132e3 100644
/*
* Send all pending events
*/
-diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
-index e82d050..d0add47 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
-@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
+@@ -39,7 +39,7 @@
if (pScreen) {
rrScrPriv(pScreen);
@@ -159,11 +157,9 @@ index e82d050..d0add47 100644
/*
* Send ConfigureNotify on any layout change
*/
-diff --git a/randr/rrinfo.c b/randr/rrinfo.c
-index 1408d6f..fc57bd4 100644
--- a/randr/rrinfo.c
+++ b/randr/rrinfo.c
-@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen,
+@@ -225,7 +225,7 @@
pScrPriv->minHeight = minHeight;
pScrPriv->maxWidth = maxWidth;
pScrPriv->maxHeight = maxHeight;
@@ -172,11 +168,9 @@ index 1408d6f..fc57bd4 100644
pScrPriv->configChanged = TRUE;
}
-diff --git a/randr/rroutput.c b/randr/rroutput.c
-index 88781ba..195bef9 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
-@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged)
+@@ -36,7 +36,7 @@
output->changed = TRUE;
if (pScreen) {
rrScrPriv(pScreen);
@@ -185,11 +179,9 @@ index 88781ba..195bef9 100644
if (configChanged)
pScrPriv->configChanged = TRUE;
}
-diff --git a/randr/rrscreen.c b/randr/rrscreen.c
-index 39340cc..36179ae 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
-@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen)
+@@ -143,7 +143,7 @@
pScrPriv->height = pScreen->height;
pScrPriv->mmWidth = pScreen->mmWidth;
pScrPriv->mmHeight = pScreen->mmHeight;
@@ -198,6 +190,3 @@ index 39340cc..36179ae 100644
/* pScrPriv->sizeChanged = TRUE; */
RRTellChanged(pScreen);
---
-1.8.1
-
diff --git a/debian/patches/config-add-no-removal.patch b/debian/patches/config-add-no-removal.patch
new file mode 100644
index 0000000..88a5b6d
--- /dev/null
+++ b/debian/patches/config-add-no-removal.patch
@@ -0,0 +1,30 @@
+diff --git a/config/udev.c b/config/udev.c
+index 454838f..74ac998 100644
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -300,10 +300,9 @@ wakeup_handler(pointer data, int err, pointer read_mask)
+ return;
+ action = udev_device_get_action(udev_device);
+ if (action) {
+- if (!strcmp(action, "add")) {
+- device_removed(udev_device);
++ if (!strcmp(action, "add"))
+ device_added(udev_device);
+- } else if (!strcmp(action, "change")) {
++ else if (!strcmp(action, "change")) {
+ /* ignore change for the drm devices */
+ if (strcmp(udev_device_get_subsystem(udev_device), "drm")) {
+ device_removed(udev_device);
+diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c
+index 76f5583..c125e35 100644
+--- a/hw/xfree86/os-support/linux/lnx_platform.c
++++ b/hw/xfree86/os-support/linux/lnx_platform.c
+@@ -126,6 +126,8 @@ xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
+ return;
+
+ out_free:
++ LogMessage(X_INFO, "config/udev: Ignoring already known drm device (%s)\n",
++ path);
+ config_odev_free_attribute_list(attribs);
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
index 5a913a9..c5c5417 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -49,3 +49,4 @@ dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch
xserver-call-CSR-for-gpus.patch
xf86-actually-set-the-compat-output-in-the-failure-c.patch
autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
+config-add-no-removal.patch
Reply to: