aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArmin Kuster <akuster@mvista.com>2017-11-22 09:46:02 -0800
committerArmin Kuster <akuster@mvista.com>2017-11-23 17:40:44 -0800
commitc9439cb1716c792cb83a55e2ff6f97867f80be65 (patch)
treec8956ffca87f865abad3e7a00abc5a6e6f50eb45
parente19c5837c966fdf5bb9f47e77d226bf0fec4e25c (diff)
downloadmeta-openembedded-contrib-c9439cb1716c792cb83a55e2ff6f97867f80be65.tar.gz
systemd: fixs mips64 login issue
With out this patch, one can not login to a mips64 machine like qumumips64 or Octeon mips64 when systemd is enabled. remove PACKAGECONFIG option too affects: systemd < 2.3.2 Reviewed-by: Jeremy Puhlman <jpuhlman@mvista.com> Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com> Signed-off-by: Armin Kuster <akuster@mvista.com>
-rw-r--r--meta/recipes-core/systemd/systemd/Ensure-kdbus-isn-t-used-3501.patch670
-rw-r--r--meta/recipes-core/systemd/systemd_230.bb3
2 files changed, 671 insertions, 2 deletions
diff --git a/meta/recipes-core/systemd/systemd/Ensure-kdbus-isn-t-used-3501.patch b/meta/recipes-core/systemd/systemd/Ensure-kdbus-isn-t-used-3501.patch
new file mode 100644
index 0000000000..d08a10fad6
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/Ensure-kdbus-isn-t-used-3501.patch
@@ -0,0 +1,670 @@
+From 222953e87f34545a3f9c6d3c18216e222bf6ea94 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Fri, 10 Jun 2016 09:50:16 -0400
+Subject: [PATCH] Ensure kdbus isn't used (#3501)
+
+Delete the dbus1 generator and some critical wiring. This prevents
+kdbus from being loaded or detected. As such, it will never be used,
+even if the user still has a useful kdbus module loaded on their system.
+
+Sort of fixes #3480. Not really, but it's better than the current state.
+
+Upstream-Status: Backport
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ Makefile.am | 20 --
+ autogen.sh | 12 +-
+ configure.ac | 10 -
+ src/core/busname.c | 7 +-
+ src/core/kmod-setup.c | 3 -
+ src/core/manager.c | 23 ---
+ src/core/mount-setup.c | 2 -
+ src/core/service.c | 17 +-
+ src/dbus1-generator/dbus1-generator.c | 331 ----------------------------------
+ src/login/pam_systemd.c | 31 ++--
+ src/shared/bus-util.c | 34 ----
+ src/shared/bus-util.h | 3 -
+ 12 files changed, 23 insertions(+), 470 deletions(-)
+ delete mode 100644 src/dbus1-generator/dbus1-generator.c
+
+Index: git/autogen.sh
+===================================================================
+--- git.orig/autogen.sh
++++ git/autogen.sh
+@@ -55,19 +55,19 @@ fi
+ cd $oldpwd
+
+ if [ "x$1" = "xc" ]; then
+- $topdir/configure CFLAGS='-g -O0 -ftrapv' --enable-kdbus $args
++ $topdir/configure CFLAGS='-g -O0 -ftrapv' $args
+ make clean
+ elif [ "x$1" = "xg" ]; then
+- $topdir/configure CFLAGS='-g -Og -ftrapv' --enable-kdbus $args
++ $topdir/configure CFLAGS='-g -Og -ftrapv' $args
+ make clean
+ elif [ "x$1" = "xa" ]; then
+- $topdir/configure CFLAGS='-g -O0 -Wsuggest-attribute=pure -Wsuggest-attribute=const -ftrapv' --enable-kdbus $args
++ $topdir/configure CFLAGS='-g -O0 -Wsuggest-attribute=pure -Wsuggest-attribute=const -ftrapv' $args
+ make clean
+ elif [ "x$1" = "xl" ]; then
+- $topdir/configure CC=clang CFLAGS='-g -O0 -ftrapv' --enable-kdbus $args
++ $topdir/configure CC=clang CFLAGS='-g -O0 -ftrapv' $args
+ make clean
+ elif [ "x$1" = "xs" ]; then
+- scan-build $topdir/configure CFLAGS='-std=gnu99 -g -O0 -ftrapv' --enable-kdbus $args
++ scan-build $topdir/configure CFLAGS='-std=gnu99 -g -O0 -ftrapv' $args
+ scan-build make
+ else
+ echo
+@@ -75,6 +75,6 @@ else
+ echo "Initialized build system. For a common configuration please run:"
+ echo "----------------------------------------------------------------"
+ echo
+- echo "$topdir/configure CFLAGS='-g -O0 -ftrapv' --enable-kdbus $args"
++ echo "$topdir/configure CFLAGS='-g -O0 -ftrapv' $args"
+ echo
+ fi
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -1294,16 +1294,6 @@ AC_ARG_WITH(tpm-pcrindex,
+ AC_DEFINE_UNQUOTED(SD_TPM_PCR, [$SD_TPM_PCR], [TPM PCR register number to use])
+
+ # ------------------------------------------------------------------------------
+-have_kdbus=no
+-AC_ARG_ENABLE(kdbus, AS_HELP_STRING([--disable-kdbus], [do not connect to kdbus by default]))
+-if test "x$enable_kdbus" != "xno"; then
+- AC_DEFINE(ENABLE_KDBUS, 1, [Define if kdbus is to be connected to by default])
+- have_kdbus=yes
+- M4_DEFINES="$M4_DEFINES -DENABLE_KDBUS"
+-fi
+-AM_CONDITIONAL(ENABLE_KDBUS, [test "$have_kdbus" = "yes"])
+-
+-# ------------------------------------------------------------------------------
+ AC_ARG_WITH(rc-local-script-path-start,
+ AS_HELP_STRING([--with-rc-local-script-path-start=PATH],
+ [Path to /etc/rc.local]),
+Index: git/src/core/busname.c
+===================================================================
+--- git.orig/src/core/busname.c
++++ git/src/core/busname.c
+@@ -998,12 +998,7 @@ static int busname_get_timeout(Unit *u,
+ }
+
+ static bool busname_supported(void) {
+- static int supported = -1;
+-
+- if (supported < 0)
+- supported = is_kdbus_available();
+-
+- return supported;
++ return false;
+ }
+
+ static int busname_control_pid(Unit *u) {
+Index: git/src/core/kmod-setup.c
+===================================================================
+--- git.orig/src/core/kmod-setup.c
++++ git/src/core/kmod-setup.c
+@@ -64,9 +64,6 @@ int kmod_setup(void) {
+ /* this should never be a module */
+ { "unix", "/proc/net/unix", true, true, NULL },
+
+- /* IPC is needed before we bring up any other services */
+- { "kdbus", "/sys/fs/kdbus", false, false, is_kdbus_wanted },
+-
+ #ifdef HAVE_LIBIPTC
+ /* netfilter is needed by networkd, nspawn among others, and cannot be autoloaded */
+ { "ip_tables", "/proc/net/ip_tables_names", false, false, NULL },
+Index: git/src/core/manager.c
+===================================================================
+--- git.orig/src/core/manager.c
++++ git/src/core/manager.c
+@@ -809,28 +809,6 @@ static int manager_setup_cgroups_agent(M
+ return 0;
+ }
+
+-static int manager_setup_kdbus(Manager *m) {
+- _cleanup_free_ char *p = NULL;
+-
+- assert(m);
+-
+- if (m->test_run || m->kdbus_fd >= 0)
+- return 0;
+- if (!is_kdbus_available())
+- return -ESOCKTNOSUPPORT;
+-
+- m->kdbus_fd = bus_kernel_create_bus(
+- MANAGER_IS_SYSTEM(m) ? "system" : "user",
+- MANAGER_IS_SYSTEM(m), &p);
+-
+- if (m->kdbus_fd < 0)
+- return log_debug_errno(m->kdbus_fd, "Failed to set up kdbus: %m");
+-
+- log_debug("Successfully set up kdbus on %s", p);
+-
+- return 0;
+-}
+-
+ static int manager_connect_bus(Manager *m, bool reexecuting) {
+ bool try_bus_connect;
+
+@@ -1225,7 +1203,6 @@ int manager_startup(Manager *m, FILE *se
+
+ /* We might have deserialized the kdbus control fd, but if we
+ * didn't, then let's create the bus now. */
+- manager_setup_kdbus(m);
+ manager_connect_bus(m, !!serialization);
+ bus_track_coldplug(m, &m->subscribed, &m->deserialized_subscribed);
+
+Index: git/src/core/mount-setup.c
+===================================================================
+--- git.orig/src/core/mount-setup.c
++++ git/src/core/mount-setup.c
+@@ -108,8 +108,6 @@ static const MountPoint mount_table[] =
+ { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
+ is_efi_boot, MNT_NONE },
+ #endif
+- { "kdbusfs", "/sys/fs/kdbus", "kdbusfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
+- is_kdbus_wanted, MNT_IN_CONTAINER },
+ };
+
+ /* These are API file systems that might be mounted by other software,
+Index: git/src/core/service.c
+===================================================================
+--- git.orig/src/core/service.c
++++ git/src/core/service.c
+@@ -574,20 +574,9 @@ static int service_setup_bus_name(Servic
+ if (!s->bus_name)
+ return 0;
+
+- if (is_kdbus_available()) {
+- const char *n;
+-
+- n = strjoina(s->bus_name, ".busname");
+- r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true);
+- if (r < 0)
+- return log_unit_error_errno(UNIT(s), r, "Failed to add dependency to .busname unit: %m");
+-
+- } else {
+- /* If kdbus is not available, we know the dbus socket is required, hence pull it in, and require it */
+- r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, NULL, true);
+- if (r < 0)
+- return log_unit_error_errno(UNIT(s), r, "Failed to add dependency on " SPECIAL_DBUS_SOCKET ": %m");
+- }
++ r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, NULL, true);
++ if (r < 0)
++ return log_unit_error_errno(UNIT(s), r, "Failed to add dependency on " SPECIAL_DBUS_SOCKET ": %m");
+
+ /* Regardless if kdbus is used or not, we always want to be ordered against dbus.socket if both are in the transaction. */
+ r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_DBUS_SOCKET, NULL, true);
+Index: git/src/dbus1-generator/dbus1-generator.c
+===================================================================
+--- git.orig/src/dbus1-generator/dbus1-generator.c
++++ /dev/null
+@@ -1,331 +0,0 @@
+-/***
+- This file is part of systemd.
+-
+- Copyright 2013 Lennart Poettering
+-
+- systemd is free software; you can redistribute it and/or modify it
+- under the terms of the GNU Lesser General Public License as published by
+- the Free Software Foundation; either version 2.1 of the License, or
+- (at your option) any later version.
+-
+- systemd is distributed in the hope that it will be useful, but
+- WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public License
+- along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-***/
+-
+-#include "alloc-util.h"
+-#include "bus-internal.h"
+-#include "bus-util.h"
+-#include "cgroup-util.h"
+-#include "conf-parser.h"
+-#include "dirent-util.h"
+-#include "fd-util.h"
+-#include "fileio.h"
+-#include "mkdir.h"
+-#include "special.h"
+-#include "unit-name.h"
+-#include "util.h"
+-
+-static const char *arg_dest_late = "/tmp", *arg_dest = "/tmp";
+-
+-static int create_dbus_files(
+- const char *path,
+- const char *name,
+- const char *service,
+- const char *exec,
+- const char *user,
+- const char *type) {
+-
+- _cleanup_free_ char *b = NULL, *s = NULL, *lnk = NULL;
+- _cleanup_fclose_ FILE *f = NULL;
+- int r;
+-
+- assert(path);
+- assert(name);
+- assert(service || exec);
+-
+- if (!service) {
+- _cleanup_free_ char *a = NULL;
+-
+- s = strjoin("dbus-", name, ".service", NULL);
+- if (!s)
+- return log_oom();
+-
+- a = strjoin(arg_dest_late, "/", s, NULL);
+- if (!a)
+- return log_oom();
+-
+- f = fopen(a, "wxe");
+- if (!f)
+- return log_error_errno(errno, "Failed to create %s: %m", a);
+-
+- fprintf(f,
+- "# Automatically generated by systemd-dbus1-generator\n\n"
+- "[Unit]\n"
+- "SourcePath=%s\n"
+- "Description=DBUS1: %s\n"
+- "Documentation=man:systemd-dbus1-generator(8)\n\n"
+- "[Service]\n"
+- "ExecStart=%s\n"
+- "Type=dbus\n"
+- "BusName=%s\n",
+- path,
+- name,
+- exec,
+- name);
+-
+- if (user)
+- fprintf(f, "User=%s\n", user);
+-
+-
+- if (type) {
+- fprintf(f, "Environment=DBUS_STARTER_BUS_TYPE=%s\n", type);
+-
+- if (streq(type, "system"))
+- fprintf(f, "Environment=DBUS_STARTER_ADDRESS=" DEFAULT_SYSTEM_BUS_ADDRESS "\n");
+- else if (streq(type, "session")) {
+- char *run;
+-
+- run = getenv("XDG_RUNTIME_DIR");
+- if (!run) {
+- log_error("XDG_RUNTIME_DIR not set.");
+- return -EINVAL;
+- }
+-
+- fprintf(f, "Environment=DBUS_STARTER_ADDRESS="KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT "\n",
+- getuid(), run);
+- }
+- }
+-
+- r = fflush_and_check(f);
+- if (r < 0)
+- return log_error_errno(r, "Failed to write %s: %m", a);
+-
+- f = safe_fclose(f);
+-
+- service = s;
+- }
+-
+- b = strjoin(arg_dest_late, "/", name, ".busname", NULL);
+- if (!b)
+- return log_oom();
+-
+- f = fopen(b, "wxe");
+- if (!f)
+- return log_error_errno(errno, "Failed to create %s: %m", b);
+-
+- fprintf(f,
+- "# Automatically generated by systemd-dbus1-generator\n\n"
+- "[Unit]\n"
+- "SourcePath=%s\n"
+- "Description=DBUS1: %s\n"
+- "Documentation=man:systemd-dbus1-generator(8)\n\n"
+- "[BusName]\n"
+- "Name=%s\n"
+- "Service=%s\n"
+- "AllowWorld=talk\n",
+- path,
+- name,
+- name,
+- service);
+-
+- r = fflush_and_check(f);
+- if (r < 0)
+- return log_error_errno(r, "Failed to write %s: %m", b);
+-
+- lnk = strjoin(arg_dest_late, "/" SPECIAL_BUSNAMES_TARGET ".wants/", name, ".busname", NULL);
+- if (!lnk)
+- return log_oom();
+-
+- mkdir_parents_label(lnk, 0755);
+- if (symlink(b, lnk))
+- return log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
+-
+- return 0;
+-}
+-
+-static int add_dbus(const char *path, const char *fname, const char *type) {
+- _cleanup_free_ char *name = NULL, *exec = NULL, *user = NULL, *service = NULL;
+-
+- const ConfigTableItem table[] = {
+- { "D-BUS Service", "Name", config_parse_string, 0, &name },
+- { "D-BUS Service", "Exec", config_parse_string, 0, &exec },
+- { "D-BUS Service", "User", config_parse_string, 0, &user },
+- { "D-BUS Service", "SystemdService", config_parse_string, 0, &service },
+- { },
+- };
+-
+- char *p;
+- int r;
+-
+- assert(path);
+- assert(fname);
+-
+- p = strjoina(path, "/", fname);
+- r = config_parse(NULL, p, NULL,
+- "D-BUS Service\0",
+- config_item_table_lookup, table,
+- true, false, true, NULL);
+- if (r < 0)
+- return r;
+-
+- if (!name) {
+- log_warning("Activation file %s lacks name setting, ignoring.", p);
+- return 0;
+- }
+-
+- if (!service_name_is_valid(name)) {
+- log_warning("Bus service name %s is not valid, ignoring.", name);
+- return 0;
+- }
+-
+- if (streq(name, "org.freedesktop.systemd1")) {
+- log_debug("Skipping %s, identified as systemd.", p);
+- return 0;
+- }
+-
+- if (service) {
+- if (!unit_name_is_valid(service, UNIT_NAME_PLAIN|UNIT_NAME_INSTANCE)) {
+- log_warning("Unit name %s is not valid, ignoring.", service);
+- return 0;
+- }
+- if (!endswith(service, ".service")) {
+- log_warning("Bus names can only activate services, ignoring %s.", p);
+- return 0;
+- }
+- } else {
+- if (streq(exec, "/bin/false") || !exec) {
+- log_warning("Neither service name nor binary path specified, ignoring %s.", p);
+- return 0;
+- }
+-
+- if (exec[0] != '/') {
+- log_warning("Exec= in %s does not start with an absolute path, ignoring.", p);
+- return 0;
+- }
+- }
+-
+- return create_dbus_files(p, name, service, exec, user, type);
+-}
+-
+-static int parse_dbus_fragments(const char *path, const char *type) {
+- _cleanup_closedir_ DIR *d = NULL;
+- struct dirent *de;
+- int r;
+-
+- assert(path);
+- assert(type);
+-
+- d = opendir(path);
+- if (!d) {
+- if (errno == -ENOENT)
+- return 0;
+-
+- return log_error_errno(errno, "Failed to enumerate D-Bus activated services: %m");
+- }
+-
+- r = 0;
+- FOREACH_DIRENT(de, d, goto fail) {
+- int q;
+-
+- if (!endswith(de->d_name, ".service"))
+- continue;
+-
+- q = add_dbus(path, de->d_name, type);
+- if (q < 0)
+- r = q;
+- }
+-
+- return r;
+-
+-fail:
+- return log_error_errno(errno, "Failed to read D-Bus services directory: %m");
+-}
+-
+-static int link_busnames_target(const char *units) {
+- const char *f, *t;
+-
+- f = strjoina(units, "/" SPECIAL_BUSNAMES_TARGET);
+- t = strjoina(arg_dest, "/" SPECIAL_BASIC_TARGET ".wants/" SPECIAL_BUSNAMES_TARGET);
+-
+- mkdir_parents_label(t, 0755);
+- if (symlink(f, t) < 0)
+- return log_error_errno(errno, "Failed to create symlink %s: %m", t);
+-
+- return 0;
+-}
+-
+-static int link_compatibility(const char *units) {
+- const char *f, *t;
+-
+- f = strjoina(units, "/systemd-bus-proxyd.socket");
+- t = strjoina(arg_dest, "/" SPECIAL_DBUS_SOCKET);
+- mkdir_parents_label(t, 0755);
+- if (symlink(f, t) < 0)
+- return log_error_errno(errno, "Failed to create symlink %s: %m", t);
+-
+- f = strjoina(units, "/systemd-bus-proxyd.socket");
+- t = strjoina(arg_dest, "/" SPECIAL_SOCKETS_TARGET ".wants/systemd-bus-proxyd.socket");
+- mkdir_parents_label(t, 0755);
+- if (symlink(f, t) < 0)
+- return log_error_errno(errno, "Failed to create symlink %s: %m", t);
+-
+- t = strjoina(arg_dest, "/" SPECIAL_DBUS_SERVICE);
+- if (symlink("/dev/null", t) < 0)
+- return log_error_errno(errno, "Failed to mask %s: %m", t);
+-
+- return 0;
+-}
+-
+-int main(int argc, char *argv[]) {
+- const char *path, *type, *units;
+- int r, q;
+-
+- if (argc > 1 && argc != 4) {
+- log_error("This program takes three or no arguments.");
+- return EXIT_FAILURE;
+- }
+-
+- if (argc > 1) {
+- arg_dest = argv[1];
+- arg_dest_late = argv[3];
+- }
+-
+- log_set_target(LOG_TARGET_SAFE);
+- log_parse_environment();
+- log_open();
+-
+- umask(0022);
+-
+- if (!is_kdbus_available())
+- return 0;
+-
+- r = cg_pid_get_owner_uid(0, NULL);
+- if (r >= 0) {
+- path = "/usr/share/dbus-1/services";
+- type = "session";
+- units = USER_DATA_UNIT_PATH;
+- } else if (r == -ENXIO) {
+- path = "/usr/share/dbus-1/system-services";
+- type = "system";
+- units = SYSTEM_DATA_UNIT_PATH;
+- } else
+- return log_error_errno(r, "Failed to determine whether we are running as user or system instance: %m");
+-
+- r = parse_dbus_fragments(path, type);
+-
+- /* FIXME: One day this should just be pulled in statically from basic.target */
+- q = link_busnames_target(units);
+- if (q < 0)
+- r = q;
+-
+- q = link_compatibility(units);
+- if (q < 0)
+- r = q;
+-
+- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+-}
+Index: git/src/login/pam_systemd.c
+===================================================================
+--- git.orig/src/login/pam_systemd.c
++++ git/src/login/pam_systemd.c
+@@ -182,25 +182,20 @@ static int export_legacy_dbus_address(
+ _cleanup_free_ char *s = NULL;
+ int r = PAM_BUF_ERR;
+
+- if (is_kdbus_available()) {
+- if (asprintf(&s, KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT, uid, runtime) < 0)
+- goto error;
+- } else {
+- /* FIXME: We *really* should move the access() check into the
+- * daemons that spawn dbus-daemon, instead of forcing
+- * DBUS_SESSION_BUS_ADDRESS= here. */
++ /* FIXME: We *really* should move the access() check into the
++ * daemons that spawn dbus-daemon, instead of forcing
++ * DBUS_SESSION_BUS_ADDRESS= here. */
+
+- s = strjoin(runtime, "/bus", NULL);
+- if (!s)
+- goto error;
++ s = strjoin(runtime, "/bus", NULL);
++ if (!s)
++ goto error;
+
+- if (access(s, F_OK) < 0)
+- return PAM_SUCCESS;
++ if (access(s, F_OK) < 0)
++ return PAM_SUCCESS;
+
+- s = mfree(s);
+- if (asprintf(&s, UNIX_USER_BUS_ADDRESS_FMT, runtime) < 0)
+- goto error;
+- }
++ s = mfree(s);
++ if (asprintf(&s, UNIX_USER_BUS_ADDRESS_FMT, runtime) < 0)
++ goto error;
+
+ r = pam_misc_setenv(handle, "DBUS_SESSION_BUS_ADDRESS", s, 0);
+ if (r != PAM_SUCCESS)
+Index: git/src/shared/bus-util.c
+===================================================================
+--- git.orig/src/shared/bus-util.c
++++ git/src/shared/bus-util.c
+@@ -1492,40 +1492,6 @@ int bus_path_decode_unique(const char *p
+ return 1;
+ }
+
+-bool is_kdbus_wanted(void) {
+- _cleanup_free_ char *value = NULL;
+-#ifdef ENABLE_KDBUS
+- const bool configured = true;
+-#else
+- const bool configured = false;
+-#endif
+-
+- int r;
+-
+- if (get_proc_cmdline_key("kdbus", NULL) > 0)
+- return true;
+-
+- r = get_proc_cmdline_key("kdbus=", &value);
+- if (r <= 0)
+- return configured;
+-
+- return parse_boolean(value) == 1;
+-}
+-
+-bool is_kdbus_available(void) {
+- _cleanup_close_ int fd = -1;
+- struct kdbus_cmd cmd = { .size = sizeof(cmd), .flags = KDBUS_FLAG_NEGOTIATE };
+-
+- if (!is_kdbus_wanted())
+- return false;
+-
+- fd = open("/sys/fs/kdbus/control", O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
+- if (fd < 0)
+- return false;
+-
+- return ioctl(fd, KDBUS_CMD_BUS_MAKE, &cmd) >= 0;
+-}
+-
+ int bus_property_get_rlimit(
+ sd_bus *bus,
+ const char *path,
+Index: git/src/shared/bus-util.h
+===================================================================
+--- git.orig/src/shared/bus-util.h
++++ git/src/shared/bus-util.h
+@@ -157,7 +157,4 @@ int bus_log_create_error(int r);
+ int bus_path_encode_unique(sd_bus *b, const char *prefix, const char *sender_id, const char *external_id, char **ret_path);
+ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_sender, char **ret_external);
+
+-bool is_kdbus_wanted(void);
+-bool is_kdbus_available(void);
+-
+ int bus_property_get_rlimit(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
+Index: git/Makefile.am
+===================================================================
+--- git.orig/Makefile.am
++++ git/Makefile.am
+@@ -2895,29 +2895,9 @@ systemd_gpt_auto_generator_CFLAGS = \
+ endif
+
+ # ------------------------------------------------------------------------------
+-systemgenerator_PROGRAMS += \
+- systemd-dbus1-generator
+-
+-systemd_dbus1_generator_SOURCES = \
+- src/dbus1-generator/dbus1-generator.c
+-
+-systemd_dbus1_generator_LDADD = \
+- libshared.la
+-
+-dbus1-generator-install-hook:
+- $(AM_V_at)$(MKDIR_P) $(DESTDIR)$(usergeneratordir)
+- $(AM_V_RM)rm -f $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+- $(AM_V_LN)lnr $(DESTDIR)$(systemgeneratordir)/systemd-dbus1-generator $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+-
+-dbus1-generator-uninstall-hook:
+- rm -f $(DESTDIR)$(usergeneratordir)/systemd-dbus1-generator
+-
+ dist_xinitrc_SCRIPTS = \
+ xorg/50-systemd-user.sh
+
+-INSTALL_EXEC_HOOKS += dbus1-generator-install-hook
+-UNINSTALL_EXEC_HOOKS += dbus1-generator-uninstall-hook
+-
+ # ------------------------------------------------------------------------------
+ systemd_sysv_generator_SOURCES = \
+ src/sysv-generator/sysv-generator.c
diff --git a/meta/recipes-core/systemd/systemd_230.bb b/meta/recipes-core/systemd/systemd_230.bb
index 40f1428340..f4ff860f00 100644
--- a/meta/recipes-core/systemd/systemd_230.bb
+++ b/meta/recipes-core/systemd/systemd_230.bb
@@ -37,6 +37,7 @@ SRC_URI += " \
file://udev-re-enable-mount-propagation-for-udevd.patch \
file://CVE-2016-7795.patch \
file://validate-user.patch \
+ file://Ensure-kdbus-isn-t-used-3501.patch \
"
SRC_URI_append_libc-uclibc = "\
file://0002-units-Prefer-getty-to-agetty-in-console-setup-system.patch \
@@ -61,7 +62,6 @@ PACKAGECONFIG ??= "xz \
timedated \
timesyncd \
localed \
- kdbus \
ima \
smack \
logind \
@@ -96,7 +96,6 @@ PACKAGECONFIG[timedated] = "--enable-timedated,--disable-timedated"
PACKAGECONFIG[timesyncd] = "--enable-timesyncd,--disable-timesyncd"
PACKAGECONFIG[localed] = "--enable-localed,--disable-localed"
PACKAGECONFIG[efi] = "--enable-efi,--disable-efi"
-PACKAGECONFIG[kdbus] = "--enable-kdbus,--disable-kdbus"
PACKAGECONFIG[ima] = "--enable-ima,--disable-ima"
PACKAGECONFIG[smack] = "--enable-smack,--disable-smack"
# libseccomp is found in meta-security