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