[arch-commits] Commit in gdm/trunk (5 files)

Jan Steffens heftig at archlinux.org
Sat Jun 20 15:34:04 UTC 2015


    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)" <jan.steffens at gmail.com>
 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)" <jan.steffens at gmail.com>
+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 <bradfirj at fstab.me>
+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 <dh.herrmann at gmail.com>
+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
 }



More information about the arch-commits mailing list