Date: Saturday, June 20, 2015 @ 17:34:04 Author: heftig Revision: 241143
Update patchset; cherry-pick some fixes Added: gdm/trunk/0002-Xsession-Don-t-start-ssh-agent-by-default.patch gdm/trunk/0003-manager-fix-monitor-hotplug-segfault.patch gdm/trunk/0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch Modified: gdm/trunk/0001-Add-Arch-Linux-PAM-config-files.patch gdm/trunk/PKGBUILD -----------------------------------------------------------------+ 0001-Add-Arch-Linux-PAM-config-files.patch | 14 - 0002-Xsession-Don-t-start-ssh-agent-by-default.patch | 31 +++ 0003-manager-fix-monitor-hotplug-segfault.patch | 43 ++++ 0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch | 88 ++++++++++ PKGBUILD | 15 + 5 files changed, 181 insertions(+), 10 deletions(-) Modified: 0001-Add-Arch-Linux-PAM-config-files.patch =================================================================== --- 0001-Add-Arch-Linux-PAM-config-files.patch 2015-06-20 14:52:55 UTC (rev 241142) +++ 0001-Add-Arch-Linux-PAM-config-files.patch 2015-06-20 15:34:04 UTC (rev 241143) @@ -1,7 +1,7 @@ -From 0ec12ab21edeffbb58b2cb49081abeb8e2ac0cb1 Mon Sep 17 00:00:00 2001 +From b186cda5f6320126cf0804e05592a73c605845a5 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <[email protected]> Date: Thu, 9 Oct 2014 00:55:31 +0200 -Subject: [PATCH] Add Arch Linux PAM config files +Subject: [PATCH 1/4] Add Arch Linux PAM config files --- configure.ac | 6 ++++-- @@ -21,7 +21,7 @@ create mode 100644 data/pam-arch/gdm-smartcard.pam diff --git a/configure.ac b/configure.ac -index 9cac4de..f4aeaeb 100644 +index b7e86f8..f3f6a45 100644 --- a/configure.ac +++ b/configure.ac @@ -189,12 +189,13 @@ if test x$enable_split_authentication = xyes; then @@ -57,10 +57,10 @@ AC_ARG_ENABLE(console-helper, AS_HELP_STRING([--enable-console-helper], diff --git a/data/Makefile.am b/data/Makefile.am -index 1b79bc3..341b779 100644 +index 7d521bb..7c0abea 100644 --- a/data/Makefile.am +++ b/data/Makefile.am -@@ -140,6 +140,15 @@ pam_lfs_files = pam-lfs/gdm.pam \ +@@ -130,6 +130,15 @@ pam_lfs_files = pam-lfs/gdm.pam \ $(NULL) EXTRA_DIST += $(pam_lfs_files) @@ -76,7 +76,7 @@ if ENABLE_REDHAT_PAM_CONFIG pam_files = $(pam_redhat_files) endif -@@ -152,6 +161,9 @@ endif +@@ -142,6 +151,9 @@ endif if ENABLE_LFS_PAM_CONFIG pam_files = $(pam_lfs_files) endif @@ -195,5 +195,5 @@ +session optional pam_keyinit.so force revoke +session include system-local-login -- -2.1.2 +2.4.4 Added: 0002-Xsession-Don-t-start-ssh-agent-by-default.patch =================================================================== --- 0002-Xsession-Don-t-start-ssh-agent-by-default.patch (rev 0) +++ 0002-Xsession-Don-t-start-ssh-agent-by-default.patch 2015-06-20 15:34:04 UTC (rev 241143) @@ -0,0 +1,31 @@ +From 5e39419518da2f081348ae1771d71800a9696f0f Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" <[email protected]> +Date: Sat, 20 Jun 2015 17:22:38 +0200 +Subject: [PATCH 2/4] Xsession: Don't start ssh-agent by default + +--- + data/Xsession.in | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/data/Xsession.in b/data/Xsession.in +index f253375..c143b30 100755 +--- a/data/Xsession.in ++++ b/data/Xsession.in +@@ -184,14 +184,6 @@ if [ "x$command" = "xdefault" ] ; then + fi + fi + +-# add ssh-agent if found +-sshagent="`gdmwhich ssh-agent`" +-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then +- command="$sshagent -- $command" +-elif [ -z "$sshagent" ] ; then +- echo "$0: ssh-agent not found!" +-fi +- + echo "$0: Setup done, will execute: $command" + + eval exec $command +-- +2.4.4 + Added: 0003-manager-fix-monitor-hotplug-segfault.patch =================================================================== --- 0003-manager-fix-monitor-hotplug-segfault.patch (rev 0) +++ 0003-manager-fix-monitor-hotplug-segfault.patch 2015-06-20 15:34:04 UTC (rev 241143) @@ -0,0 +1,43 @@ +From 45fe287fd83b06ad1260cf91c49be8990b423ae4 Mon Sep 17 00:00:00 2001 +From: Richard Bradfield <[email protected]> +Date: Sun, 24 May 2015 21:48:01 +0100 +Subject: [PATCH 3/4] manager: fix monitor hotplug segfault + +commit e5a0e92f59e256edc6489f2234fbe54c25ba9743 introduced a way to +find a user session associated with a display object. + +That function has a bug in it, where it skips every even +registered user session because it follows the next pointer +twice per iteration of the loop. + +This can cause a crash on monitor hotplug, and in other scenarios +if there are an odd number of user sessions (since the +terminating NULL will be even and skipped over). + +https://bugzilla.gnome.org/show_bug.cgi?id=749987 +--- + daemon/gdm-manager.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 64f11dd..5e496f7 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1126,11 +1126,10 @@ static GdmSession * + get_user_session_for_display (GdmManager *self, + GdmDisplay *display) + { +- GList *node; + +- for (node = self->priv->user_sessions; +- node != NULL; +- node = node->next) { ++ GList *node = self->priv->user_sessions; ++ ++ while (node != NULL) { + GdmSession *session = node->data; + GdmDisplay *candidate_display; + GList *next_node = node->next; +-- +2.4.4 + Added: 0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch =================================================================== --- 0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch (rev 0) +++ 0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch 2015-06-20 15:34:04 UTC (rev 241143) @@ -0,0 +1,88 @@ +From a5184cdd92faeba9967afe26d677f1103a9a34c0 Mon Sep 17 00:00:00 2001 +From: David Herrmann <[email protected]> +Date: Wed, 3 Jun 2015 20:07:18 +0200 +Subject: [PATCH 4/4] gdm-{x,wayland}-session: don't start dbus-daemon if + unneeded + +Desktop sessions require a message bus to be present for IPC between +the various desktop services and applications. + +GDM handles that by manually, unconditionally spawning an instance of +dbus-daemon at login time before starting the user session (from the +gdm-x-session and gdm-wayland-session launcher programs). + +Newer versions of the kernel will support this message bus functionality +without needing to start dbus-daemon (via kdbus). The message bus is +initialized as part of the login process by a kernel interface exercised +from pam_systemd. + +Since gdm-x-session and gdm-wayland-session spawn a dbus-daemon +unconditionally as part of session startup, users using kdbus end up with +two message buses per session. The extra bus gets in the way, confusing +programs and wasting resources. + +This commit changes gdm-x-session and gdm-wayland-session to check for +DBUS_SESSION_BUS_ADDRESS in the environment, and if set, skip spawning +a dbus-daemon based session bus. + +https://bugzilla.gnome.org/show_bug.cgi?id=750358 +--- + daemon/gdm-wayland-session.c | 8 ++++++++ + daemon/gdm-x-session.c | 8 ++++++++ + 2 files changed, 16 insertions(+) + +diff --git a/daemon/gdm-wayland-session.c b/daemon/gdm-wayland-session.c +index b2f3808..b6eccc2 100644 +--- a/daemon/gdm-wayland-session.c ++++ b/daemon/gdm-wayland-session.c +@@ -95,6 +95,7 @@ spawn_bus (State *state, + GInputStream *input_stream = NULL; + GDataInputStream *data_stream = NULL; + GError *error = NULL; ++ const char *bus_env = NULL; + char *bus_address_fd_string = NULL; + char *bus_address = NULL; + gsize bus_address_size; +@@ -105,6 +106,13 @@ spawn_bus (State *state, + + g_debug ("Running session message bus"); + ++ bus_env = g_getenv ("DBUS_SESSION_BUS_ADDRESS"); ++ if (bus_env != NULL) { ++ g_debug ("session message bus already running, not starting another one"); ++ state->bus_address = g_strdup (bus_env); ++ return TRUE; ++ } ++ + ret = g_unix_open_pipe (pipe_fds, FD_CLOEXEC, &error); + + if (!ret) { +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index 3cc7d40..bcb884c 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -367,6 +367,7 @@ spawn_bus (State *state, + GInputStream *input_stream = NULL; + GDataInputStream *data_stream = NULL; + GError *error = NULL; ++ const char *bus_env = NULL; + char *bus_address_fd_string; + char *bus_address = NULL; + gsize bus_address_size; +@@ -377,6 +378,13 @@ spawn_bus (State *state, + + g_debug ("Running session message bus"); + ++ bus_env = g_getenv ("DBUS_SESSION_BUS_ADDRESS"); ++ if (bus_env != NULL) { ++ g_debug ("session message bus already running, not starting another one"); ++ state->bus_address = g_strdup (bus_env); ++ return TRUE; ++ } ++ + ret = g_unix_open_pipe (pipe_fds, FD_CLOEXEC, &error); + + if (!ret) { +-- +2.4.4 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-06-20 14:52:55 UTC (rev 241142) +++ PKGBUILD 2015-06-20 15:34:04 UTC (rev 241143) @@ -5,7 +5,7 @@ pkgbase=gdm pkgname=(gdm libgdm) pkgver=3.16.1.1 -pkgrel=2 +pkgrel=3 pkgdesc="Gnome Display Manager" arch=(i686 x86_64) license=(GPL) @@ -14,14 +14,23 @@ makedepends=(itstool intltool yelp-tools gobject-introspection) checkdepends=('check') source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:4}/$pkgbase-$pkgver.tar.xz - 0001-Add-Arch-Linux-PAM-config-files.patch) + 0001-Add-Arch-Linux-PAM-config-files.patch + 0002-Xsession-Don-t-start-ssh-agent-by-default.patch + 0003-manager-fix-monitor-hotplug-segfault.patch + 0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch) sha256sums=('2d2409fdc0a53b080377730a7775bc3239f8584829ff327d3465def0b20433db' - 'ad24ed788f2285a935c72c131a9627aa865095b08865416ed6cc60883bf656fc') + 'c1e5aec336ff14a74224b4aa76173e2b40e281431dc299ac991ad550d6cd7f0e' + 'f16effe4d9f015ebf3582e1bdedeaa9b85939d6d1a2aafae250c2a0dcbd6ae3e' + 'e22311e3c690b7127f01cad221cd1626848dbaae283aedc4f9897e2a3c8052e2' + '553dc302b1d8b695a77fcff31ff28867a6eddf1e0775995a922a109225b07711') prepare() { cd $pkgbase-$pkgver patch -Np1 -i ../0001-Add-Arch-Linux-PAM-config-files.patch + patch -Np1 -i ../0002-Xsession-Don-t-start-ssh-agent-by-default.patch + patch -Np1 -i ../0003-manager-fix-monitor-hotplug-segfault.patch + patch -Np1 -i ../0004-gdm-x-wayland-session-don-t-start-dbus-daemon-if-unn.patch AUTOPOINT='intltoolize --automake -c' autoreconf -fi }
