systemd-logind: Only use systemd-logind integration together with keeptty
systemd-logind integration does not work when starting X on a new tty, as that detaches X from the current session and after hat systemd-logind revokes all rights any already open fds and refuses to open new fds for X. This means that currently e.g. "startx -- vt7" breaks, and breaks badly, requiring ssh access to the system to kill X. The fix for this is easy, we must not use systemd-logind integration when not using KeepTty, or iow we may only use systemd-logind integration together with KeepTty. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Tested-by: Aaron Plattner <aplattner@nvidia.com>
This commit is contained in:
parent
81bcada14e
commit
c88a325899
|
@ -271,9 +271,9 @@ is ignored if
|
||||||
is anything other than \(oqPCI\(cq.
|
is anything other than \(oqPCI\(cq.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-keeptty
|
.B \-keeptty
|
||||||
Prevent the server from detaching its initial controlling terminal.
|
Prevent the server from detaching its initial controlling terminal. If you
|
||||||
This option is only useful when debugging the server. Not all platforms
|
want to use systemd-logind integration you must specify this option.
|
||||||
support (or can use) this option.
|
Not all platforms support (or can use) this option.
|
||||||
.TP 8
|
.TP 8
|
||||||
.BI \-keyboard " keyboard-name"
|
.BI \-keyboard " keyboard-name"
|
||||||
Use the xorg.conf(__filemansuffix__) file
|
Use the xorg.conf(__filemansuffix__) file
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "dbus-core.h"
|
#include "dbus-core.h"
|
||||||
|
#include "linux.h"
|
||||||
#include "xf86.h"
|
#include "xf86.h"
|
||||||
#include "xf86platformBus.h"
|
#include "xf86platformBus.h"
|
||||||
#include "xf86Xinput.h"
|
#include "xf86Xinput.h"
|
||||||
|
@ -596,6 +597,13 @@ static struct dbus_core_hook core_hook = {
|
||||||
int
|
int
|
||||||
systemd_logind_init(void)
|
systemd_logind_init(void)
|
||||||
{
|
{
|
||||||
|
if (linux_parse_vt_settings(TRUE) && !linux_get_keeptty()) {
|
||||||
|
LogMessage(X_INFO,
|
||||||
|
"systemd-logind: logind integration requires -keeptty and "
|
||||||
|
"-keeptty was not provided, disabling logind integration\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return dbus_core_add_hook(&core_hook);
|
return dbus_core_add_hook(&core_hook);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user