summarylogtreecommitdiffstats
path: root/systemd-logind-dont-second-guess-D-Bus-default-tim.patch
diff options
context:
space:
mode:
Diffstat (limited to 'systemd-logind-dont-second-guess-D-Bus-default-tim.patch')
-rw-r--r--systemd-logind-dont-second-guess-D-Bus-default-tim.patch446
1 files changed, 0 insertions, 446 deletions
diff --git a/systemd-logind-dont-second-guess-D-Bus-default-tim.patch b/systemd-logind-dont-second-guess-D-Bus-default-tim.patch
deleted file mode 100644
index 0245211ad198..000000000000
--- a/systemd-logind-dont-second-guess-D-Bus-default-tim.patch
+++ /dev/null
@@ -1,446 +0,0 @@
-From 89250c82a01062775f8f840737a757125138fbce Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 10 Apr 2015 14:19:50 -0400
-Subject: [PATCH] systemd-logind: don't second guess D-Bus default timeout
-
-At the moment, the X server uses a non-default timeout for D-Bus
-messages to systemd-logind. The only timeouts normally used with
-D-Bus are:
-
-1) Infinite
-2) Default
-
-Anything else is just as arbitrary as Default, and so rarely makes
-sense to use instead of Default.
-
-Put another way, there's little reason to be fault tolerant against
-a local root running daemon (logind), that in some configurations, the
-X server already depends on for proper functionality.
-
-This commit changes systemd-logind to just use the default timeouts.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1209347
----
- hw/xfree86/os-support/linux/systemd-logind.c | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c
-index 57c87c0..4ad41a3 100644
---- a/hw/xfree86/os-support/linux/systemd-logind.c
-+++ b/hw/xfree86/os-support/linux/systemd-logind.c
-@@ -13,62 +13,60 @@
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Author: Hans de Goede <hdegoede@redhat.com>
- */
-
- #ifdef HAVE_XORG_CONFIG_H
- #include <xorg-config.h>
- #endif
-
- #include <dbus/dbus.h>
- #include <string.h>
- #include <sys/types.h>
- #include <unistd.h>
-
- #include "os.h"
- #include "dbus-core.h"
- #include "xf86.h"
- #include "xf86platformBus.h"
- #include "xf86Xinput.h"
-
- #include "systemd-logind.h"
-
--#define DBUS_TIMEOUT 500 /* Wait max 0.5 seconds */
--
- struct systemd_logind_info {
- DBusConnection *conn;
- char *session;
- Bool active;
- Bool vt_active;
- };
-
- static struct systemd_logind_info logind_info;
-
- static InputInfoPtr
- systemd_logind_find_info_ptr_by_devnum(InputInfoPtr start,
- int major, int minor)
- {
- InputInfoPtr pInfo;
-
- for (pInfo = start; pInfo; pInfo = pInfo->next)
- if (pInfo->major == major && pInfo->minor == minor &&
- (pInfo->flags & XI86_SERVER_FD))
- return pInfo;
-
- return NULL;
- }
-
- static void
- systemd_logind_set_input_fd_for_all_devs(int major, int minor, int fd,
- Bool enable)
- {
- InputInfoPtr pInfo;
-
- pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor);
-@@ -103,61 +101,61 @@ systemd_logind_take_fd(int _major, int _minor, const char *path,
- if (strstr(path, "mouse"))
- return -1;
-
- /* Check if we already have an InputInfo entry with this major, minor
- * (shared device-nodes happen ie with Wacom tablets). */
- pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor);
- if (pInfo) {
- LogMessage(X_INFO, "systemd-logind: returning pre-existing fd for %s %u:%u\n",
- path, major, minor);
- *paused_ret = FALSE;
- return pInfo->fd;
- }
-
- dbus_error_init(&error);
-
- msg = dbus_message_new_method_call("org.freedesktop.login1", info->session,
- "org.freedesktop.login1.Session", "TakeDevice");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major,
- DBUS_TYPE_UINT32, &minor,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply) {
- LogMessage(X_ERROR, "systemd-logind: failed to take device %s: %s\n",
- path, error.message);
- goto cleanup;
- }
-
- if (!dbus_message_get_args(reply, &error,
- DBUS_TYPE_UNIX_FD, &fd,
- DBUS_TYPE_BOOLEAN, &paused,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: TakeDevice %s: %s\n",
- path, error.message);
- goto cleanup;
- }
-
- *paused_ret = paused;
-
- LogMessage(X_INFO, "systemd-logind: got fd for %s %u:%u fd %d paused %d\n",
- path, major, minor, fd, paused);
-
- cleanup:
- if (msg)
- dbus_message_unref(msg);
- if (reply)
- dbus_message_unref(reply);
- dbus_error_free(&error);
-
- return fd;
- }
-
-@@ -180,61 +178,61 @@ systemd_logind_release_fd(int _major, int _minor, int fd)
- * and minor, otherwise other InputInfo's are still referencing the fd. */
- pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor);
- while (pInfo) {
- matches++;
- pInfo = systemd_logind_find_info_ptr_by_devnum(pInfo->next, major, minor);
- }
- if (matches > 1) {
- LogMessage(X_INFO, "systemd-logind: not releasing fd for %u:%u, still in use\n", major, minor);
- return;
- }
-
- LogMessage(X_INFO, "systemd-logind: releasing fd for %u:%u\n", major, minor);
-
- dbus_error_init(&error);
-
- msg = dbus_message_new_method_call("org.freedesktop.login1", info->session,
- "org.freedesktop.login1.Session", "ReleaseDevice");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major,
- DBUS_TYPE_UINT32, &minor,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply)
- LogMessage(X_ERROR, "systemd-logind: failed to release device: %s\n",
- error.message);
-
- cleanup:
- if (msg)
- dbus_message_unref(msg);
- if (reply)
- dbus_message_unref(reply);
- dbus_error_free(&error);
- close:
- if (fd != -1)
- close(fd);
- }
-
- int
- systemd_logind_controls_session(void)
- {
- return logind_info.session ? 1 : 0;
- }
-
- void
- systemd_logind_vtenter(void)
- {
- struct systemd_logind_info *info = &logind_info;
- InputInfoPtr pInfo;
- int i;
-
- if (!info->session)
- return; /* Not using systemd-logind */
-@@ -262,61 +260,61 @@ systemd_logind_vtenter(void)
-
- /* Do delayed input probing, this must be done after the above enabling */
- xf86InputEnableVTProbe();
- }
-
- static void
- systemd_logind_ack_pause(struct systemd_logind_info *info,
- dbus_int32_t minor, dbus_int32_t major)
- {
- DBusError error;
- DBusMessage *msg = NULL;
- DBusMessage *reply = NULL;
-
- dbus_error_init(&error);
-
- msg = dbus_message_new_method_call("org.freedesktop.login1", info->session,
- "org.freedesktop.login1.Session", "PauseDeviceComplete");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major,
- DBUS_TYPE_UINT32, &minor,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply)
- LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n",
- error.message);
-
- cleanup:
- if (msg)
- dbus_message_unref(msg);
- if (reply)
- dbus_message_unref(reply);
- dbus_error_free(&error);
- }
-
- static DBusHandlerResult
- message_filter(DBusConnection * connection, DBusMessage * message, void *data)
- {
- struct systemd_logind_info *info = data;
- struct xf86_platform_device *pdev = NULL;
- InputInfoPtr pInfo = NULL;
- int ack = 0, pause = 0, fd = -1;
- DBusError error;
- dbus_int32_t major, minor;
- char *pause_str;
-
- if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL)
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
- dbus_error_init(&error);
-
- if (dbus_message_is_signal(message,
- "org.freedesktop.DBus", "NameOwnerChanged")) {
-@@ -430,96 +428,96 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data)
- }
-
- static void
- connect_hook(DBusConnection *connection, void *data)
- {
- struct systemd_logind_info *info = data;
- DBusError error;
- DBusMessage *msg = NULL;
- DBusMessage *reply = NULL;
- dbus_int32_t arg;
- char *session = NULL;
-
- dbus_error_init(&error);
-
- msg = dbus_message_new_method_call("org.freedesktop.login1",
- "/org/freedesktop/login1", "org.freedesktop.login1.Manager",
- "GetSessionByPID");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- arg = getpid();
- if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &arg,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(connection, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply) {
- LogMessage(X_ERROR, "systemd-logind: failed to get session: %s\n",
- error.message);
- goto cleanup;
- }
- dbus_message_unref(msg);
-
- if (!dbus_message_get_args(reply, &error, DBUS_TYPE_OBJECT_PATH, &session,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: GetSessionByPID: %s\n",
- error.message);
- goto cleanup;
- }
- session = XNFstrdup(session);
-
- dbus_message_unref(reply);
- reply = NULL;
-
-
- msg = dbus_message_new_method_call("org.freedesktop.login1",
- session, "org.freedesktop.login1.Session", "TakeControl");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- arg = FALSE; /* Don't forcibly take over over the session */
- if (!dbus_message_append_args(msg, DBUS_TYPE_BOOLEAN, &arg,
- DBUS_TYPE_INVALID)) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(connection, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply) {
- LogMessage(X_ERROR, "systemd-logind: TakeControl failed: %s\n",
- error.message);
- goto cleanup;
- }
-
- dbus_bus_add_match(connection,
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus'",
- &error);
- if (dbus_error_is_set(&error)) {
- LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
- error.message);
- goto cleanup;
- }
-
- /*
- * HdG: This is not useful with systemd <= 208 since the signal only
- * contains invalidated property names there, rather than property, val
- * pairs as it should. Instead we just use the first resume / pause now.
- */
- #if 0
- snprintf(match, sizeof(match),
- "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',path='%s'",
- session);
- dbus_bus_add_match(connection, match, &error);
- if (dbus_error_is_set(&error)) {
- LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n",
- error.message);
- goto cleanup;
- }
-@@ -537,61 +535,61 @@ connect_hook(DBusConnection *connection, void *data)
- info->session = session;
- info->vt_active = info->active = TRUE; /* The server owns the vt during init */
- session = NULL;
-
- cleanup:
- free(session);
- if (msg)
- dbus_message_unref(msg);
- if (reply)
- dbus_message_unref(reply);
- dbus_error_free(&error);
- }
-
- static void
- systemd_logind_release_control(struct systemd_logind_info *info)
- {
- DBusError error;
- DBusMessage *msg = NULL;
- DBusMessage *reply = NULL;
-
- dbus_error_init(&error);
-
- msg = dbus_message_new_method_call("org.freedesktop.login1",
- info->session, "org.freedesktop.login1.Session", "ReleaseControl");
- if (!msg) {
- LogMessage(X_ERROR, "systemd-logind: out of memory\n");
- goto cleanup;
- }
-
- reply = dbus_connection_send_with_reply_and_block(info->conn, msg,
-- DBUS_TIMEOUT, &error);
-+ DBUS_TIMEOUT_USE_DEFAULT, &error);
- if (!reply) {
- LogMessage(X_ERROR, "systemd-logind: ReleaseControl failed: %s\n",
- error.message);
- goto cleanup;
- }
-
- cleanup:
- if (msg)
- dbus_message_unref(msg);
- if (reply)
- dbus_message_unref(reply);
- dbus_error_free(&error);
- }
-
- static void
- disconnect_hook(void *data)
- {
- struct systemd_logind_info *info = data;
-
- free(info->session);
- info->session = NULL;
- info->conn = NULL;
- }
-
- static struct dbus_core_hook core_hook = {
- .connect = connect_hook,
- .disconnect = disconnect_hook,
- .data = &logind_info,
- };
-
---
-2.3.3 \ No newline at end of file