Submitted By:            Bruce Dubbs
Date:                    2018-04-01
Initial Package Version: 238
Upstream Status:         Committed
Origin:                  Upstream git repository diff by Thanos Baloukas
Description:             Fix building issues with various depenencies

diff -Naur systemd-238/hwdb/60-evdev.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-evdev.hwdb
--- systemd-238/hwdb/60-evdev.hwdb	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-evdev.hwdb	2018-03-22 12:50:37.000000000 +0200
@@ -114,8 +114,10 @@
  EVDEV_ABS_35=::18
  EVDEV_ABS_36=::16
 
-# Asus X550CC and S550CB
-evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pn?550C?:*
+# Asus X550CC, S550CB and N550JV
+evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnX550CC:*
+evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnS550CB:*
+evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnN550JV:*
  EVDEV_ABS_00=::31
  EVDEV_ABS_01=::30
  EVDEV_ABS_35=::31
@@ -144,6 +146,20 @@
  EVDEV_ABS_00=::14
  EVDEV_ABS_01=::18
 
+# Dell Inspiron 3537 - PS/2
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnDellInc.:pnInspiron3537*
+ EVDEV_ABS_00=1268:5675:41
+ EVDEV_ABS_01=1101:4792:61
+ EVDEV_ABS_35=1268:5675:41
+ EVDEV_ABS_36=1101:4792:61
+
+# Dell Inspiron 3537 - RMI4
+evdev:name:Synaptics TM2382-001:dmi:*svnDellInc.:pnInspiron3537*
+ EVDEV_ABS_00=::24
+ EVDEV_ABS_01=::34
+ EVDEV_ABS_35=::24
+ EVDEV_ABS_36=::34
+
 # Dell Inspiron N5040
 evdev:name:AlpsPS/2 ALPS DualPoint TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN5040*
  EVDEV_ABS_00=25:2000:22
@@ -241,6 +257,13 @@
  EVDEV_ABS_35=1068:5805:44
  EVDEV_ABS_36=1197:4890:57
 
+# HP Pavilion 15
+evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPLaptop15-bs0xx:*
+ EVDEV_ABS_00=1272:5689:38
+ EVDEV_ABS_01=1029:4916:78
+ EVDEV_ABS_35=1272:5689:38
+ EVDEV_ABS_36=1029:4916:78
+
 # HP Spectre
 evdev:name:SynPS/2 Synaptics TouchPad:dmi:i*svnHP:pnHPSpectreNotebook*
  EVDEV_ABS_00=1205:5691:47
@@ -390,6 +413,17 @@
  EVDEV_ABS_36=653:5395:116
 
 #########################################
+# Razer
+#########################################
+
+# Razer Blade Stealth
+evdev:name:1A586753:00 06CB:8323 Touchpad:dmi:*svnRazer:pnBladeStealth:*
+ EVDEV_ABS_00=::12:8
+ EVDEV_ABS_01=::11:8
+ EVDEV_ABS_35=::12:8
+ EVDEV_ABS_36=::11:8
+
+#########################################
 # Samsung
 #########################################
 
diff -Naur systemd-238/hwdb/60-keyboard.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-keyboard.hwdb
--- systemd-238/hwdb/60-keyboard.hwdb	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-keyboard.hwdb	2018-03-22 12:50:37.000000000 +0200
@@ -1421,3 +1421,24 @@
 evdev:input:b0003v046Dp4002*
  KEYBOARD_LED_NUMLOCK=0
  KEYBOARD_LED_CAPSLOCK=0
+
+# Lenovo ThinkPad T430s
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT430s
+ KEYBOARD_LED_CAPSLOCK=0
+
+# Lenovo ThinkPad T440s
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT440s
+ KEYBOARD_LED_CAPSLOCK=0
+
+# Lenovo ThinkPad T450s
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT450s
+ KEYBOARD_LED_CAPSLOCK=0
+
+# Lenovo ThinkPad T560s
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT560s
+ KEYBOARD_LED_CAPSLOCK=0
+ KEYBOARD_LED_NUMLOCK=0
+
+# Lenovo ThinkPad X1 Carbon 3rd Gen
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX1Carbon3rd
+ KEYBOARD_LED_CAPSLOCK=0
diff -Naur systemd-238/hwdb/60-sensor.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-sensor.hwdb
--- systemd-238/hwdb/60-sensor.hwdb	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-sensor.hwdb	2018-03-22 12:50:37.000000000 +0200
@@ -15,7 +15,7 @@
 #   /etc/udev/hwdb.d/61-sensor-local.hwdb
 # and add your rules there. To load the new rules execute (as root):
 #   systemd-hwdb update
-#   udevadm trigger -y `dirname $(udevadm info -n "/dev/iio:deviceXXX" -q path)`
+#   udevadm trigger -v -p DEVNAME=/dev/iio:deviceXXX
 # where /dev/iio:deviceXXX is the device in question.
 #
 # If your changes are generally applicable, preferably send them as a pull
@@ -82,7 +82,7 @@
  ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
 
 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LD*
- ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
+ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
 
 #########################################
 # Axxo
@@ -148,6 +148,12 @@
  ACCEL_MOUNT_MATRIX=0, 1, 0; 0, 0, -1; -1, 0, 0
 
 #########################################
+# Eve Technology
+#########################################
+sensor:modalias:acpi:KIOX000A*:dmi:*:svnEVE*:pnEveV:*
+ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
+
+#########################################
 # GP-electronic
 #########################################
 sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrBYT70A.YNCHENG.WIN.007:*:svnInsyde:pnT701:*
diff -Naur systemd-238/man/hostnamectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/hostnamectl.xml
--- systemd-238/man/hostnamectl.xml	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/hostnamectl.xml	2018-03-22 12:50:37.000000000 +0200
@@ -121,6 +121,10 @@
       <xi:include href="standard-options.xml" xpointer="help" />
       <xi:include href="standard-options.xml" xpointer="version" />
     </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>Commands</title>
 
     <para>The following commands are understood:</para>
 
@@ -128,9 +132,8 @@
       <varlistentry>
         <term><command>status</command></term>
 
-        <listitem><para>Show current system
-        hostname and related
-        information.</para></listitem>
+        <listitem><para>Show current system hostname and related information. If no command is specified,
+        this is the implied default.</para></listitem>
       </varlistentry>
 
       <varlistentry>
diff -Naur systemd-238/man/localectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/localectl.xml
--- systemd-238/man/localectl.xml	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/localectl.xml	2018-03-22 12:50:37.000000000 +0200
@@ -118,6 +118,10 @@
       <xi:include href="standard-options.xml" xpointer="version" />
       <xi:include href="standard-options.xml" xpointer="no-pager" />
     </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>Commands</title>
 
     <para>The following commands are understood:</para>
 
@@ -125,8 +129,8 @@
       <varlistentry>
         <term><command>status</command></term>
 
-        <listitem><para>Show current settings of the system locale and
-        keyboard mapping.</para></listitem>
+        <listitem><para>Show current settings of the system locale and keyboard mapping.
+        If no command is specified, this is the implied default.</para></listitem>
       </varlistentry>
 
       <varlistentry>
diff -Naur systemd-238/man/timedatectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/timedatectl.xml
--- systemd-238/man/timedatectl.xml	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/timedatectl.xml	2018-03-22 12:50:37.000000000 +0200
@@ -98,6 +98,10 @@
       <xi:include href="standard-options.xml" xpointer="version" />
       <xi:include href="standard-options.xml" xpointer="no-pager" />
     </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>Commands</title>
 
     <para>The following commands are understood:</para>
 
@@ -109,6 +113,7 @@
         including whether network time synchronization through
         <filename>systemd-timesyncd.service</filename> is active. Even if it is
         inactive, a different service might still synchronize the clock.
+        If no command is specified, this is the implied default.
         </para></listitem>
       </varlistentry>
 
diff -Naur systemd-238/meson.build systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/meson.build
--- systemd-238/meson.build	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/meson.build	2018-03-22 12:50:37.000000000 +0200
@@ -604,7 +604,7 @@
 conf.set_quoted('TELINIT', get_option('telinit-path'))
 
 if run_command('ln', '--relative', '--help').returncode() != 0
-        error('ln does not support --relative')
+        error('ln does not support --relative (added in coreutils 8.16)')
 endif
 
 ############################################################
@@ -2903,8 +2903,9 @@
         ['debug mmap cache'],
 ]
 
-        cond = tuple.get(1, '')
-        if cond == ''
+        if tuple.length() >= 2
+                cond = tuple[1]
+        else
                 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
                 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
                 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
diff -Naur systemd-238/NEWS systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/NEWS
--- systemd-238/NEWS	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/NEWS	2018-03-22 12:50:37.000000000 +0200
@@ -11,7 +11,7 @@
           other forms of resource accounting (CPU, IO, IP) remain off for now,
           because it's not clear yet that their impact is small enough to move
           from opt-in to opt-out. We recommend downstreams to leave memory
-          accounting on by default if kernel 4.14 or higher is are primarily
+          accounting on by default if kernel 4.14 or higher is primarily
           used. On very resource constrained systems or when support for old
           kernels is a necessity, -Dmemory-accounting-default=false can be used
           to revert this change.
@@ -35,12 +35,12 @@
           disk (in case some of those files are owned by that user), while
           still allowing local admin overrides.
 
-          This functionality is exposed to rpm scriplets through a new
+          This functionality is exposed to rpm scriptlets through a new
           %sysusers_create_package macro. Old %sysusers_create and
           %sysusers_create_inline macros are deprecated.
 
           A transfiletrigger for sysusers.d configuration is now installed,
-          which means that it should be uncessary to call systemd-sysusers from
+          which means that it should be unnecessary to call systemd-sysusers from
           package installation scripts, unless the package installs any files
           owned by those newly-created users, in which case
           %sysusers_create_package should be used.
diff -Naur systemd-238/shell-completion/zsh/_systemd-analyze systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/shell-completion/zsh/_systemd-analyze
--- systemd-238/shell-completion/zsh/_systemd-analyze	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/shell-completion/zsh/_systemd-analyze	2018-03-22 12:50:37.000000000 +0200
@@ -33,12 +33,13 @@
         'plot:Output SVG graphic showing service initialization'
         'dot:Dump dependency graph (in dot(1) format)'
         'dump:Dump server status'
-        'unit-paths':List unit load paths'
+        'unit-paths:List unit load paths'
         'log-level:Get/set systemd log threshold'
         'log-target:Get/set systemd log target'
         'service-watchdogs:Get/set service watchdog status'
         'syscall-filter:List syscalls in seccomp filter'
         'verify:Check unit files for correctness'
+        'calendar:Validate repetitive calendar time events'
     )
 
     if (( CURRENT == 1 )); then
diff -Naur systemd-238/src/basic/cgroup-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/cgroup-util.c
--- systemd-238/src/basic/cgroup-util.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/cgroup-util.c	2018-03-22 12:50:37.000000000 +0200
@@ -2038,7 +2038,6 @@
                 char **ret_values) {
 
         _cleanup_free_ char *filename = NULL, *contents = NULL;
-        _cleanup_fclose_ FILE *f = NULL;
         const char *p;
         size_t n, i, n_done = 0;
         char **v;
diff -Naur systemd-238/src/basic/log.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.c
--- systemd-238/src/basic/log.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.c	2018-03-22 12:50:37.000000000 +0200
@@ -814,7 +814,7 @@
         log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer);
 }
 
-noreturn void log_assert_failed_realm(
+_noreturn_ void log_assert_failed_realm(
                 LogRealm realm,
                 const char *text,
                 const char *file,
@@ -826,7 +826,7 @@
         abort();
 }
 
-noreturn void log_assert_failed_unreachable_realm(
+_noreturn_ void log_assert_failed_unreachable_realm(
                 LogRealm realm,
                 const char *text,
                 const char *file,
diff -Naur systemd-238/src/basic/log.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.h
--- systemd-238/src/basic/log.h	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.h	2018-03-22 12:50:37.000000000 +0200
@@ -186,7 +186,7 @@
                 char *buffer);
 
 /* Logging for various assertions */
-noreturn void log_assert_failed_realm(
+_noreturn_ void log_assert_failed_realm(
                 LogRealm realm,
                 const char *text,
                 const char *file,
@@ -195,7 +195,7 @@
 #define log_assert_failed(text, ...) \
         log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__)
 
-noreturn void log_assert_failed_unreachable_realm(
+_noreturn_ void log_assert_failed_unreachable_realm(
                 LogRealm realm,
                 const char *text,
                 const char *file,
diff -Naur systemd-238/src/basic/macro.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/macro.h
--- systemd-238/src/basic/macro.h	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/macro.h	2018-03-22 12:50:37.000000000 +0200
@@ -53,6 +53,15 @@
 #else
 #define _fallthrough_
 #endif
+/* Define C11 noreturn without <stdnoreturn.h> and even on older gcc
+ * compiler versions */
+#ifndef _noreturn_
+#if __STDC_VERSION__ >= 201112L
+#define _noreturn_ _Noreturn
+#else
+#define _noreturn_ __attribute__((noreturn))
+#endif
+#endif
 
 /* Temporarily disable some warnings */
 #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT                     \
@@ -414,16 +423,6 @@
 #endif
 #endif
 
-/* Define C11 noreturn without <stdnoreturn.h> and even on older gcc
- * compiler versions */
-#ifndef noreturn
-#if __STDC_VERSION__ >= 201112L
-#define noreturn _Noreturn
-#else
-#define noreturn __attribute__((noreturn))
-#endif
-#endif
-
 #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
         static inline void func##p(type *p) {                   \
                 if (*p)                                         \
diff -Naur systemd-238/src/basic/process-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.c
--- systemd-238/src/basic/process-util.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.c	2018-03-22 12:50:37.000000000 +0200
@@ -987,7 +987,7 @@
         return cached > 0;
 }
 
-noreturn void freeze(void) {
+_noreturn_ void freeze(void) {
 
         log_close();
 
diff -Naur systemd-238/src/basic/process-util.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.h
--- systemd-238/src/basic/process-util.h	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.h	2018-03-22 12:50:37.000000000 +0200
@@ -91,7 +91,7 @@
 
 bool is_main_thread(void);
 
-noreturn void freeze(void);
+_noreturn_ void freeze(void);
 
 bool oom_score_adjust_is_valid(int oa);
 
diff -Naur systemd-238/src/busctl/busctl.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/busctl/busctl.c
--- systemd-238/src/busctl/busctl.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/busctl/busctl.c	2018-03-22 12:50:37.000000000 +0200
@@ -112,6 +112,9 @@
         }
 
         merged = new(char*, hashmap_size(names) + 1);
+        if (!merged)
+                return log_oom();
+
         HASHMAP_FOREACH_KEY(v, k, names, iterator)
                 merged[n++] = k;
 
@@ -283,8 +286,6 @@
 
 static void print_tree(const char *prefix, char **l) {
 
-        pager_open(arg_no_pager, false);
-
         prefix = strempty(prefix);
 
         if (arg_list) {
diff -Naur systemd-238/src/core/cgroup.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/cgroup.c
--- systemd-238/src/core/cgroup.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/cgroup.c	2018-03-22 12:50:37.000000000 +0200
@@ -2272,19 +2272,20 @@
         /* 5. Make sure we are in the special "init.scope" unit in the root slice. */
         scope_path = strjoina(m->cgroup_root, "/" SPECIAL_INIT_SCOPE);
         r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, scope_path, 0);
-        if (r < 0)
-                return log_error_errno(r, "Failed to create %s control group: %m", scope_path);
+        if (r >= 0) {
+                /* Also, move all other userspace processes remaining in the root cgroup into that scope. */
+                r = cg_migrate(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, SYSTEMD_CGROUP_CONTROLLER, scope_path, 0);
+                if (r < 0)
+                        log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m");
 
-        /* Also, move all other userspace processes remaining in the root cgroup into that scope. */
-        r = cg_migrate(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, SYSTEMD_CGROUP_CONTROLLER, scope_path, 0);
-        if (r < 0)
-                log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m");
+                /* 6. And pin it, so that it cannot be unmounted */
+                safe_close(m->pin_cgroupfs_fd);
+                m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
+                if (m->pin_cgroupfs_fd < 0)
+                        return log_error_errno(errno, "Failed to open pin file: %m");
 
-        /* 6. And pin it, so that it cannot be unmounted */
-        safe_close(m->pin_cgroupfs_fd);
-        m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
-        if (m->pin_cgroupfs_fd < 0)
-                return log_error_errno(errno, "Failed to open pin file: %m");
+        } else if (r < 0 && !m->test_run_flags)
+                return log_error_errno(r, "Failed to create %s control group: %m", scope_path);
 
         /* 7. Always enable hierarchical support if it exists... */
         if (!all_unified && m->test_run_flags == 0)
diff -Naur systemd-238/src/core/macros.systemd.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/macros.systemd.in
--- systemd-238/src/core/macros.systemd.in	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/macros.systemd.in	2018-03-22 12:50:37.000000000 +0200
@@ -101,7 +101,9 @@
 %{nil}
 
 %sysusers_create_inline() \
-echo %{?*} | systemd-sysusers - >/dev/null 2>&1 || : \
+systemd-sysusers - <<SYSTEMD_INLINE_EOF >/dev/null 2>&1 || : \
+%{?*} \
+SYSTEMD_INLINE_EOF \
 %{nil}
 
 # This should be used by package installation scripts which require users or
@@ -118,7 +120,9 @@
 #   %files
 #   %{_sysusersdir}/%{name}.conf
 %sysusers_create_package() \
-echo "%(cat %2)" | systemd-sysusers --replace=%_sysusersdir/%1.conf - >/dev/null 2>&1 || : \
+systemd-sysusers --replace=%_sysusersdir/%1.conf - <<SYSTEMD_INLINE_EOF >/dev/null 2>&1 || : \
+%(cat %2) \
+SYSTEMD_INLINE_EOF \
 %{nil}
 
 # This may be used by package installation scripts to create files according to
@@ -135,7 +139,9 @@
 #   %files
 #   %{_tmpfilesdir}/%{name}.conf
 %tmpfiles_create_package() \
-echo "%(cat %2)" | systemd-tmpfiles --replace=%_tmpfilesdir/%1.conf --create - >/dev/null 2>&1 || : \
+systemd-tmpfiles --replace=%_tmpfilesdir/%1.conf --create - <<SYSTEMD_INLINE_EOF >/dev/null 2>&1 || : \
+%(cat %2) \
+SYSTEMD_INLINE_EOF \
 %{nil}
 
 %sysctl_apply() \
diff -Naur systemd-238/src/core/main.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/main.c
--- systemd-238/src/core/main.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/main.c	2018-03-22 12:50:37.000000000 +0200
@@ -141,7 +141,7 @@
 static sd_id128_t arg_machine_id = {};
 static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE;
 
-noreturn static void freeze_or_reboot(void) {
+_noreturn_ static void freeze_or_reboot(void) {
 
         if (arg_crash_reboot) {
                 log_notice("Rebooting in 10s...");
@@ -156,7 +156,7 @@
         freeze();
 }
 
-noreturn static void crash(int sig) {
+_noreturn_ static void crash(int sig) {
         struct sigaction sa;
         pid_t pid;
 
diff -Naur systemd-238/src/core/mount-setup.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/mount-setup.c
--- systemd-238/src/core/mount-setup.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/mount-setup.c	2018-03-22 12:50:37.000000000 +0200
@@ -248,6 +248,7 @@
 
 int mount_cgroup_controllers(char ***join_controllers) {
         _cleanup_set_free_free_ Set *controllers = NULL;
+        bool has_argument = !!join_controllers;
         int r;
 
         if (!cg_is_legacy_wanted())
@@ -255,7 +256,7 @@
 
         /* Mount all available cgroup controllers that are built into the kernel. */
 
-        if (!join_controllers)
+        if (!has_argument)
                 /* The defaults:
                  * mount "cpu" + "cpuacct" together, and "net_cls" + "net_prio".
                  *
@@ -300,7 +301,8 @@
 
                                         t = set_remove(controllers, *i);
                                         if (!t) {
-                                                free(*i);
+                                                if (has_argument)
+                                                        free(*i);
                                                 continue;
                                         }
                                 }
diff -Naur systemd-238/src/core/triggers.systemd.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/triggers.systemd.in
--- systemd-238/src/core/triggers.systemd.in	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/triggers.systemd.in	2018-03-22 12:50:37.000000000 +0200
@@ -84,7 +84,7 @@
     end
 end
 
-%transfiletriggerin -P 100500 --  @tmpfilesdir@
+%transfiletriggerin -P 100500 -p <lua> -- @tmpfilesdir@
 -- This script will process files installed in @tmpfilesdir@ to create
 -- tmpfiles automatically. The priority is set such that it will run
 -- after the sysusers file trigger, but before any other triggers.
@@ -97,7 +97,7 @@
     end
 end
 
-%transfiletriggerin --  @udevhwdbdir@
+%transfiletriggerin -p <lua> -- @udevhwdbdir@
 -- This script will automatically invoke hwdb update if files have been
 -- installed or updated in @udevhwdbdir@.
 if posix.access("/run/systemd/system") then
@@ -109,7 +109,7 @@
     end
 end
 
-%transfiletriggerin --  @catalogdir@
+%transfiletriggerin -p <lua> -- @catalogdir@
 -- This script will automatically invoke journal catalog update if files
 -- have been installed or updated in @catalogdir@.
 if posix.access("/run/systemd/system") then
@@ -121,7 +121,7 @@
     end
 end
 
-%transfiletriggerin -- @udevrulesdir@
+%transfiletriggerin -p <lua> -- @udevrulesdir@
 -- This script will automatically update udev with new rules if files
 -- have been installed or updated in @udevrulesdir@.
 if posix.access("/run/systemd/system") then
@@ -133,7 +133,7 @@
     end
 end
 
-%transfiletriggerin -- @sysctldir@
+%transfiletriggerin -p <lua> -- @sysctldir@
 -- This script will automatically apply sysctl rules if files have been
 -- installed or updated in @sysctldir@.
 if posix.access("/run/systemd/system") then
@@ -145,7 +145,7 @@
     end
 end
 
-%transfiletriggerin -- @binfmtdir@
+%transfiletriggerin -p <lua> -- @binfmtdir@
 -- This script will automatically apply binfmt rules if files have been
 -- installed or updated in @binfmtdir@.
 if posix.access("/run/systemd/system") then
diff -Naur systemd-238/src/core/umount.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/umount.c
--- systemd-238/src/core/umount.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/umount.c	2018-03-22 12:50:37.000000000 +0200
@@ -61,6 +61,8 @@
         LIST_REMOVE(mount_point, *head, m);
 
         free(m->path);
+        free(m->options);
+        free(m->type);
         free(m);
 }
 
@@ -313,7 +315,7 @@
                 if (!node)
                         return -ENOMEM;
 
-                m = new(MountPoint, 1);
+                m = new0(MountPoint, 1);
                 if (!m) {
                         free(node);
                         return -ENOMEM;
diff -Naur systemd-238/src/core/unit.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/unit.c
--- systemd-238/src/core/unit.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/unit.c	2018-03-22 12:50:37.000000000 +0200
@@ -2502,8 +2502,11 @@
                 }
         }
 
-        manager_recheck_journal(m);
-        manager_recheck_dbus(m);
+        if (!MANAGER_IS_RELOADING(u->manager)) {
+                manager_recheck_journal(m);
+                manager_recheck_dbus(m);
+        }
+
         unit_trigger_notify(u);
 
         if (!MANAGER_IS_RELOADING(u->manager)) {
diff -Naur systemd-238/src/journal/journal-verify.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/journal-verify.c
--- systemd-238/src/journal/journal-verify.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/journal-verify.c	2018-03-22 12:50:37.000000000 +0200
@@ -1245,7 +1245,7 @@
         }
 
         if (entry_monotonic_set &&
-            (!sd_id128_equal(entry_boot_id, f->header->boot_id) ||
+            (sd_id128_equal(entry_boot_id, f->header->boot_id) &&
              entry_monotonic != le64toh(f->header->tail_entry_monotonic))) {
                 error(0, "Invalid tail monotonic timestamp");
                 r = -EBADMSG;
diff -Naur systemd-238/src/journal/test-journal-interleaving.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/test-journal-interleaving.c
--- systemd-238/src/journal/test-journal-interleaving.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/test-journal-interleaving.c	2018-03-22 12:50:37.000000000 +0200
@@ -37,7 +37,7 @@
 
 static bool arg_keep = false;
 
-noreturn static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) {
+_noreturn_ static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) {
         log_internal(LOG_CRIT, error, file, line, func,
                      "'%s' failed at %s:%u (%s): %m", text, file, line, func);
         abort();
diff -Naur systemd-238/src/journal-remote/meson.build systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal-remote/meson.build
--- systemd-238/src/journal-remote/meson.build	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal-remote/meson.build	2018-03-22 12:50:37.000000000 +0200
@@ -61,6 +61,6 @@
         meson.add_install_script('sh', '-c',
                                  mkdir_p.format('/var/log/journal/remote'))
         meson.add_install_script('sh', '-c',
-                                 'chown 0:0 $DESTDIR/var/log/journal/remote &&
-                                 chmod 755 $DESTDIR/var/log/journal/remote || :')
+                                 '''chown 0:0 $DESTDIR/var/log/journal/remote &&
+                                    chmod 755 $DESTDIR/var/log/journal/remote || :''')
 endif
diff -Naur systemd-238/src/libsystemd/sd-bus/bus-socket.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/libsystemd/sd-bus/bus-socket.c
--- systemd-238/src/libsystemd/sd-bus/bus-socket.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/libsystemd/sd-bus/bus-socket.c	2018-03-22 12:50:37.000000000 +0200
@@ -960,14 +960,9 @@
         if (r == 0) {
                 /* Child */
 
-                safe_close(s[0]);
-
                 if (rearrange_stdio(s[1], s[1], STDERR_FILENO) < 0)
                         _exit(EXIT_FAILURE);
 
-                (void) fd_nonblock(STDIN_FILENO, false);
-                (void) fd_nonblock(STDOUT_FILENO, false);
-
                 if (b->exec_argv)
                         execvp(b->exec_path, b->exec_argv);
                 else {
diff -Naur systemd-238/src/nspawn/nspawn.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/nspawn/nspawn.c
--- systemd-238/src/nspawn/nspawn.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/nspawn/nspawn.c	2018-03-22 12:50:37.000000000 +0200
@@ -2323,10 +2323,15 @@
                       arg_uid_shift,
                       arg_uid_range,
                       arg_selinux_apifs_context);
-
         if (r < 0)
                 return r;
 
+        if (!arg_network_namespace_path && arg_private_network) {
+                r = unshare(CLONE_NEWNET);
+                if (r < 0)
+                        return log_error_errno(errno, "Failed to unshare network namespace: %m");
+        }
+
         r = mount_sysfs(NULL, arg_mount_settings);
         if (r < 0)
                 return r;
@@ -2341,7 +2346,7 @@
         if (arg_use_cgns && cg_ns_supported()) {
                 r = unshare(CLONE_NEWCGROUP);
                 if (r < 0)
-                        return log_error_errno(errno, "Failed to unshare cgroup namespace");
+                        return log_error_errno(errno, "Failed to unshare cgroup namespace: %m");
                 r = mount_cgroups(
                                 "",
                                 arg_unified_cgroup_hierarchy,
@@ -2568,7 +2573,6 @@
         ssize_t l;
         int r;
         _cleanup_close_ int fd = -1;
-        bool create_netns;
 
         assert(barrier);
         assert(directory);
@@ -2811,11 +2815,8 @@
         if (fd < 0)
                 return fd;
 
-        create_netns = !arg_network_namespace_path && arg_private_network;
-
         pid = raw_clone(SIGCHLD|CLONE_NEWNS|
                         arg_clone_ns_flags |
-                        (create_netns ? CLONE_NEWNET : 0) |
                         (arg_userns_mode != USER_NAMESPACE_NO ? CLONE_NEWUSER : 0));
         if (pid < 0)
                 return log_error_errno(errno, "Failed to fork inner child: %m");
diff -Naur systemd-238/src/shared/pager.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/shared/pager.c
--- systemd-238/src/shared/pager.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/shared/pager.c	2018-03-22 12:50:37.000000000 +0200
@@ -47,7 +47,7 @@
 static bool stdout_redirected = false;
 static bool stderr_redirected = false;
 
-noreturn static void pager_fallback(void) {
+_noreturn_ static void pager_fallback(void) {
         int r;
 
         r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0);
diff -Naur systemd-238/src/systemctl/systemctl.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/systemctl/systemctl.c
--- systemd-238/src/systemctl/systemctl.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/systemctl/systemctl.c	2018-03-22 12:50:37.000000000 +0200
@@ -2915,8 +2915,8 @@
                         return log_error_errno(r, "Failed to request match for PropertiesChanged signal: %m");
         }
 
-        log_debug("%s manager for %s on %s, %s",
-                  arg_dry_run ? "Would call" : "Calling",
+        log_debug("%s dbus call org.freedesktop.systemd1.Manager %s(%s, %s)",
+                  arg_dry_run ? "Would execute" : "Executing",
                   method, name, mode);
         if (arg_dry_run)
                 return 0;
@@ -3215,6 +3215,10 @@
         if (!m)
                 return log_oom();
 
+        log_debug("%s wall message \"%s\".", arg_dry_run ? "Would set" : "Setting", m);
+        if (arg_dry_run)
+                return 0;
+
         r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.login1",
@@ -3285,6 +3289,10 @@
         polkit_agent_open_maybe();
         (void) logind_set_wall_message();
 
+        log_debug("%s org.freedesktop.login1.Manager %s dbus call.", arg_dry_run ? "Would execute" : "Executing", method);
+        if (arg_dry_run)
+                return 0;
+
         r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.login1",
@@ -3483,6 +3491,9 @@
                 return 0;
         }
 
+        if (access(KEXEC, X_OK) < 0)
+                return log_error_errno(errno, KEXEC" is not available: %m");
+
         r = find_esp_and_warn(arg_esp_path, false, &where, NULL, NULL, NULL, NULL);
         if (r == -ENOKEY) /* find_esp_and_warn() doesn't warn about this case */
                 return log_error_errno(r, "Cannot find the ESP partition mount point.");
@@ -3511,9 +3522,12 @@
         if (!options)
                 return log_oom();
 
-        log_debug("%s kexec kernel %s initrd %s options \"%s\".",
-                  arg_dry_run ? "Would load" : "loading",
-                  kernel, initrd, options);
+        log_full(arg_quiet ? LOG_DEBUG : LOG_INFO,
+                 "%s "KEXEC" --load \"%s\" --append \"%s\"%s%s%s",
+                 arg_dry_run ? "Would run" : "Running",
+                 kernel,
+                 options,
+                 initrd ? " --initrd \"" : NULL, strempty(initrd), initrd ? "\"" : "");
         if (arg_dry_run)
                 return 0;
 
@@ -3521,7 +3535,6 @@
         if (r < 0)
                 return r;
         if (r == 0) {
-
                 const char* const args[] = {
                         KEXEC,
                         "--load", kernel,
@@ -3534,7 +3547,13 @@
                 _exit(EXIT_FAILURE);
         }
 
-        return wait_for_terminate_and_check("kexec", pid, WAIT_LOG);
+        r = wait_for_terminate_and_check("kexec", pid, WAIT_LOG);
+        if (r < 0)
+                return r;
+        if (r > 0)
+                /* Command failed */
+                return -EPROTO;
+        return 0;
 }
 
 static int set_exit_code(uint8_t code) {
@@ -3592,7 +3611,9 @@
 
         } else if (a == ACTION_KEXEC) {
                 r = load_kexec_kernel();
-                if (r < 0)
+                if (r < 0 && arg_force >= 1)
+                        log_notice("Failed to load kexec kernel, continuing without.");
+                else if (r < 0)
                         return r;
 
         } else if (a == ACTION_EXIT && argc > 1) {
diff -Naur systemd-238/src/sysusers/sysusers.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/sysusers/sysusers.c
--- systemd-238/src/sysusers/sysusers.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/sysusers/sysusers.c	2018-03-22 12:50:37.000000000 +0200
@@ -396,6 +396,7 @@
 static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char **tmpfile_path) {
         _cleanup_fclose_ FILE *original = NULL, *passwd = NULL;
         _cleanup_(unlink_and_freep) char *passwd_tmp = NULL;
+        struct passwd *pw = NULL;
         Iterator iterator;
         Item *i;
         int r;
@@ -409,7 +410,6 @@
 
         original = fopen(passwd_path, "re");
         if (original) {
-                struct passwd *pw;
 
                 r = sync_rights(original, passwd);
                 if (r < 0)
@@ -430,6 +430,11 @@
                         }
 
                         errno = 0;
+
+                        /* Make sure we keep the NIS entries (if any) at the end. */
+                        if (IN_SET(pw->pw_name[0], '+', '-'))
+                                break;
+
                         if (putpwent(pw, passwd) < 0)
                                 return errno ? -errno : -EIO;
 
@@ -467,6 +472,19 @@
                 if (putpwent(&n, passwd) != 0)
                         return errno ? -errno : -EIO;
         }
+        errno = 0;
+
+        /* Append the remaining NIS entries if any */
+        while (pw) {
+                errno = 0;
+                if (putpwent(pw, passwd) < 0)
+                        return errno ? -errno : -EIO;
+
+                errno = 0;
+                pw = fgetpwent(original);
+        }
+        if (!IN_SET(errno, 0, ENOENT))
+                return -errno;
 
         r = fflush_and_check(passwd);
         if (r < 0)
@@ -482,6 +500,7 @@
 static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char **tmpfile_path) {
         _cleanup_fclose_ FILE *original = NULL, *shadow = NULL;
         _cleanup_(unlink_and_freep) char *shadow_tmp = NULL;
+        struct spwd *sp = NULL;
         Iterator iterator;
         long lstchg;
         Item *i;
@@ -498,7 +517,6 @@
 
         original = fopen(shadow_path, "re");
         if (original) {
-                struct spwd *sp;
 
                 r = sync_rights(original, shadow);
                 if (r < 0)
@@ -519,6 +537,11 @@
                         }
 
                         errno = 0;
+
+                        /* Make sure we keep the NIS entries (if any) at the end. */
+                        if (IN_SET(sp->sp_namp[0], '+', '-'))
+                                break;
+
                         if (putspent(sp, shadow) < 0)
                                 return errno ? -errno : -EIO;
 
@@ -551,6 +574,19 @@
                 if (putspent(&n, shadow) != 0)
                         return errno ? -errno : -EIO;
         }
+        errno = 0;
+
+        /* Append the remaining NIS entries if any */
+        while (sp) {
+                errno = 0;
+                if (putspent(sp, shadow) < 0)
+                        return errno ? -errno : -EIO;
+
+                errno = 0;
+                sp = fgetspent(original);
+        }
+        if (!IN_SET(errno, 0, ENOENT))
+                return -errno;
 
         r = fflush_sync_and_check(shadow);
         if (r < 0)
@@ -567,6 +603,7 @@
         _cleanup_fclose_ FILE *original = NULL, *group = NULL;
         _cleanup_(unlink_and_freep) char *group_tmp = NULL;
         bool group_changed = false;
+        struct group *gr = NULL;
         Iterator iterator;
         Item *i;
         int r;
@@ -580,7 +617,6 @@
 
         original = fopen(group_path, "re");
         if (original) {
-                struct group *gr;
 
                 r = sync_rights(original, group);
                 if (r < 0)
@@ -604,6 +640,12 @@
                                 return  -EEXIST;
                         }
 
+                        errno = 0;
+
+                        /* Make sure we keep the NIS entries (if any) at the end. */
+                        if (IN_SET(gr->gr_name[0], '+', '-'))
+                                break;
+
                         r = putgrent_with_members(gr, group);
                         if (r < 0)
                                 return r;
@@ -635,6 +677,19 @@
 
                 group_changed = true;
         }
+        errno = 0;
+
+        /* Append the remaining NIS entries if any */
+        while (gr) {
+                errno = 0;
+                if (putgrent(gr, group) != 0)
+                        return errno > 0 ? -errno : -EIO;
+
+                errno = 0;
+                gr = fgetgrent(original);
+        }
+        if (!IN_SET(errno, 0, ENOENT))
+                return -errno;
 
         r = fflush_sync_and_check(group);
         if (r < 0)
diff -Naur systemd-238/src/test/test-cgroup-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-cgroup-util.c
--- systemd-238/src/test/test-cgroup-util.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-cgroup-util.c	2018-03-22 12:50:37.000000000 +0200
@@ -408,9 +408,15 @@
 static void test_cg_get_keyed_attribute(void) {
         _cleanup_free_ char *val = NULL;
         char *vals3[3] = {}, *vals3a[3] = {};
-        int i;
+        int i, r;
 
-        assert_se(cg_get_keyed_attribute("cpu", "/init.scope", "no_such_file", STRV_MAKE("no_such_attr"), &val) == -ENOENT);
+        r = cg_get_keyed_attribute("cpu", "/init.scope", "no_such_file", STRV_MAKE("no_such_attr"), &val);
+        if (r == -ENOMEDIUM) {
+                log_info_errno(r, "Skipping most of %s, /sys/fs/cgroup not accessible: %m", __func__);
+                return;
+        }
+
+        assert_se(r == -ENOENT);
         assert_se(val == NULL);
 
         if (access("/sys/fs/cgroup/init.scope/cpu.stat", R_OK) < 0) {
diff -Naur systemd-238/src/test/test-fileio.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-fileio.c
--- systemd-238/src/test/test-fileio.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-fileio.c	2018-03-22 12:50:37.000000000 +0200
@@ -406,7 +406,7 @@
 
 static void test_write_string_stream(void) {
         char fn[] = "/tmp/test-write_string_stream-XXXXXX";
-        _cleanup_fclose_ FILE *f = NULL;
+        FILE *f = NULL;
         int fd;
         char buf[64];
 
@@ -416,8 +416,9 @@
         f = fdopen(fd, "r");
         assert_se(f);
         assert_se(write_string_stream(f, "boohoo", 0) < 0);
+        f = safe_fclose(f);
 
-        f = freopen(fn, "r+", f);
+        f = fopen(fn, "r+");
         assert_se(f);
 
         assert_se(write_string_stream(f, "boohoo", 0) == 0);
@@ -425,8 +426,9 @@
 
         assert_se(fgets(buf, sizeof(buf), f));
         assert_se(streq(buf, "boohoo\n"));
+        f = safe_fclose(f);
 
-        f = freopen(fn, "w+", f);
+        f = fopen(fn, "w+");
         assert_se(f);
 
         assert_se(write_string_stream(f, "boohoo", WRITE_STRING_FILE_AVOID_NEWLINE) == 0);
@@ -435,6 +437,7 @@
         assert_se(fgets(buf, sizeof(buf), f));
         printf(">%s<", buf);
         assert_se(streq(buf, "boohoo"));
+        f = safe_fclose(f);
 
         unlink(fn);
 }
@@ -607,7 +610,8 @@
         char name[] = "/tmp/test-systemd_writing_tmpfile.XXXXXX";
         _cleanup_free_ char *contents = NULL;
         size_t size;
-        int fd, r;
+        int r;
+        _cleanup_close_ int fd = -1;
         struct iovec iov[3];
 
         iov[0] = IOVEC_MAKE_STRING("abc\n");
diff -Naur systemd-238/src/test/test-mount-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-mount-util.c
--- systemd-238/src/test/test-mount-util.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-mount-util.c	2018-03-22 12:50:37.000000000 +0200
@@ -80,12 +80,8 @@
                 int mnt_id = PTR_TO_INT(k), mnt_id2;
 
                 r = path_get_mnt_id(p, &mnt_id2);
-                if (r == -EOPNOTSUPP) { /* kernel or file system too old? */
-                        log_debug("%s doesn't support mount IDs\n", p);
-                        continue;
-                }
-                if (IN_SET(r, -EACCES, -EPERM)) {
-                        log_debug("Can't access %s\n", p);
+                if (r < 0) {
+                        log_debug_errno(r, "Failed to get the mnt id of %s: %m\n", p);
                         continue;
                 }
 
diff -Naur systemd-238/src/test/test-process-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-process-util.c
--- systemd-238/src/test/test-process-util.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-process-util.c	2018-03-22 12:50:37.000000000 +0200
@@ -193,6 +193,8 @@
         assert_se(pid == 0);
         assert_se(unshare(CLONE_NEWNS) >= 0);
 
+        assert_se(mount(NULL, "/", NULL, MS_PRIVATE|MS_REC, NULL) >= 0);
+
         fd = mkostemp(path, O_CLOEXEC);
         assert_se(fd >= 0);
 
diff -Naur systemd-238/src/udev/collect/collect.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/collect/collect.c
--- systemd-238/src/udev/collect/collect.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/collect/collect.c	2018-03-22 12:50:37.000000000 +0200
@@ -58,7 +58,7 @@
         return container_of(node, struct _mate, node);
 }
 
-noreturn static void sig_alrm(int signo)
+_noreturn_ static void sig_alrm(int signo)
 {
         exit(4);
 }
diff -Naur systemd-238/src/udev/udev-builtin-net_id.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/udev-builtin-net_id.c
--- systemd-238/src/udev/udev-builtin-net_id.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/udev-builtin-net_id.c	2018-03-22 12:50:37.000000000 +0200
@@ -297,7 +297,7 @@
                 if (snprintf_ok(str, sizeof str, "%s/%s/address", slots, dent->d_name) &&
                     read_one_line_file(str, &address) >= 0)
                         /* match slot address with device by stripping the function */
-                        if (streq(address, udev_device_get_sysname(names->pcidev)))
+                        if (startswith(udev_device_get_sysname(names->pcidev), address))
                                 hotplug_slot = i;
 
                 if (hotplug_slot > 0)
diff -Naur systemd-238/src/udev/v4l_id/v4l_id.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/v4l_id/v4l_id.c
--- systemd-238/src/udev/v4l_id/v4l_id.c	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/v4l_id/v4l_id.c	2018-03-22 12:50:37.000000000 +0200
@@ -68,9 +68,11 @@
                 printf("ID_V4L_VERSION=2\n");
                 printf("ID_V4L_PRODUCT=%s\n", v2cap.card);
                 printf("ID_V4L_CAPABILITIES=:");
-                if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0)
+                if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0 ||
+                    (v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE_MPLANE) > 0)
                         printf("capture:");
-                if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0)
+                if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0 ||
+                    (v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT_MPLANE) > 0)
                         printf("video_output:");
                 if ((v2cap.capabilities & V4L2_CAP_VIDEO_OVERLAY) > 0)
                         printf("video_overlay:");
diff -Naur systemd-238/units/system-update-cleanup.service.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/units/system-update-cleanup.service.in
--- systemd-238/units/system-update-cleanup.service.in	2018-03-06 00:16:37.000000000 +0200
+++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/units/system-update-cleanup.service.in	2018-03-22 12:50:37.000000000 +0200
@@ -14,6 +14,7 @@
 DefaultDependencies=no
 Conflicts=shutdown.target
 Before=shutdown.target
+SuccessAction=reboot
 
 # system-update-generator uses laccess("/system-update"), while a plain
 # ConditionPathExists=/system-update uses access("/system-update"), so
@@ -32,4 +33,3 @@
 [Service]
 Type=oneshot
 ExecStart=/bin/rm -fv /system-update
-SuccessAction=reboot
