forked from pool/systemd
.
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=550
This commit is contained in:
parent
965c5aff76
commit
0176020fa5
36
systemd-big-endian-reply-matching.patch
Normal file
36
systemd-big-endian-reply-matching.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From: Olaf Kirch <okir@suse.de>
|
||||||
|
Date: Date: Wed, 12 Mar 2014 13:52:50 +0000
|
||||||
|
Subject: [PATCH] systemd big endian reply matching
|
||||||
|
|
||||||
|
Reply matching on big endian architectures is broken in the dbus code.
|
||||||
|
|
||||||
|
The hashmap functions, which are used to store and retrieves the reply_callback
|
||||||
|
structures of asynchronous calls, take a uint64_t pointer for the key argument.
|
||||||
|
However, the reply_cookie of the sd_bus_message is stored in a 32bit variable.
|
||||||
|
|
||||||
|
This works nicely on x86-64, because (a) it's little endian, and (b) the struct
|
||||||
|
is padded to the next 8 byte boundary because reply_cookie is wedged between
|
||||||
|
two pointers.
|
||||||
|
|
||||||
|
On s390x, this fails badly thanks to being big endian.
|
||||||
|
|
||||||
|
Unfortunately, this results in complete failure of any communication
|
||||||
|
between systemd daemons and the dbus-daemon, because it never gets
|
||||||
|
past the initial Hello handshake - which is sent as an asynchronous
|
||||||
|
message.
|
||||||
|
|
||||||
|
Signed-off-by: Olaf Kirch <okir@suse.de>
|
||||||
|
|
||||||
|
Index: systemd-210/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
===================================================================
|
||||||
|
--- systemd-210/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
+++ systemd-210/src/libsystemd/sd-bus/bus-message.h
|
||||||
|
@@ -84,7 +84,7 @@ struct sd_bus_message {
|
||||||
|
|
||||||
|
sd_bus *bus;
|
||||||
|
|
||||||
|
- uint32_t reply_cookie;
|
||||||
|
+ uint64_t reply_cookie;
|
||||||
|
|
||||||
|
const char *path;
|
||||||
|
const char *interface;
|
@ -43,7 +43,6 @@ BuildRequires: audit-devel
|
|||||||
BuildRequires: binutils-gold
|
BuildRequires: binutils-gold
|
||||||
%endif
|
%endif
|
||||||
%if ! 0%{?bootstrap}
|
%if ! 0%{?bootstrap}
|
||||||
BuildRequires: dbus-1
|
|
||||||
BuildRequires: docbook-xsl-stylesheets
|
BuildRequires: docbook-xsl-stylesheets
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -204,7 +203,7 @@ Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
|||||||
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
||||||
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
||||||
# PATCH-FIX-OPENSUSE Make systemd talk with dbus-daemon even on big endian
|
# PATCH-FIX-OPENSUSE Make systemd talk with dbus-daemon even on big endian
|
||||||
Patch47: use-correct-size-4-reply_cookie-4-bigendian.patch
|
Patch47: systemd-big-endian-reply-matching.patch
|
||||||
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
||||||
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
||||||
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
||||||
@ -658,6 +657,10 @@ export V=1
|
|||||||
%configure \
|
%configure \
|
||||||
--docdir=%{_docdir}/systemd \
|
--docdir=%{_docdir}/systemd \
|
||||||
--with-pamlibdir=/%{_lib}/security \
|
--with-pamlibdir=/%{_lib}/security \
|
||||||
|
--with-dbuspolicydir=%{_sysconfdir}/dbus-1/system.d \
|
||||||
|
--with-dbussessionservicedir=%{_datadir}/dbus-1/services \
|
||||||
|
--with-dbussystemservicedir=%{_datadir}/dbus-1/system-services \
|
||||||
|
--with-dbusinterfacedir=%{_datadir}/dbus-1/interfaces \
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
--disable-gudev \
|
--disable-gudev \
|
||||||
--disable-myhostname \
|
--disable-myhostname \
|
||||||
@ -1178,7 +1181,12 @@ exit 0
|
|||||||
%dir %{_sysconfdir}/systemd/system
|
%dir %{_sysconfdir}/systemd/system
|
||||||
%dir %{_sysconfdir}/systemd/user
|
%dir %{_sysconfdir}/systemd/user
|
||||||
%dir %{_sysconfdir}/xdg/systemd
|
%dir %{_sysconfdir}/xdg/systemd
|
||||||
|
%dir %{_sysconfdir}/dbus-1
|
||||||
|
%dir %{_sysconfdir}/dbus-1/system.d
|
||||||
%{_sysconfdir}/xdg/systemd/user
|
%{_sysconfdir}/xdg/systemd/user
|
||||||
|
%dir %{_datadir}/dbus-1
|
||||||
|
%dir %{_datadir}/dbus-1/services
|
||||||
|
%dir %{_datadir}/dbus-1/system-services
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/bootchart.conf
|
%config(noreplace) %{_sysconfdir}/systemd/bootchart.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
|
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
|
||||||
|
@ -198,7 +198,7 @@ Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
|||||||
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
||||||
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
||||||
# PATCH-FIX-OPENSUSE Make systemd talk with dbus-daemon even on big endian
|
# PATCH-FIX-OPENSUSE Make systemd talk with dbus-daemon even on big endian
|
||||||
Patch47: use-correct-size-4-reply_cookie-4-bigendian.patch
|
Patch47: systemd-big-endian-reply-matching.patch
|
||||||
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
||||||
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
||||||
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Date: Wed, 12 Mar 2014 13:52:50 +0000
|
|
||||||
Subject: [PATCH] Let systemd talk with dbus-daemon even on big endian
|
|
||||||
|
|
||||||
Related to bug #866732 that is to help systemd to talk with dbus-daemon
|
|
||||||
on s390x.
|
|
||||||
|
|
||||||
--- systemd-210/src/libsystemd/sd-bus/bus-message.h
|
|
||||||
+++ systemd-210/src/libsystemd/sd-bus/bus-message.h 2014-03-12 14:06:54.862235499 +0000
|
|
||||||
@@ -84,7 +84,7 @@ struct sd_bus_message {
|
|
||||||
|
|
||||||
sd_bus *bus;
|
|
||||||
|
|
||||||
- uint32_t reply_cookie;
|
|
||||||
+ uint64_t reply_cookie;
|
|
||||||
|
|
||||||
const char *path;
|
|
||||||
const char *interface;
|
|
Loading…
Reference in New Issue
Block a user