From 27bd1bd49f9d322e62d8d85963a75307262f9953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 31 Jul 2017 15:52:44 -0400 Subject: [PATCH] Backport some patches --- ...le-detecting-QEMU-TCG-via-CPUID-6399.patch | 31 ++++++++ ...on-t-assume-that-all-non-root-users-.patch | 28 +++++++ ...inks-without-the-sysroot-prefix-6411.patch | 31 ++++++++ ...-warning-when-we-get-sd_notify-messa.patch | 31 ++++++++ ...t-load-dropin-data-multiple-times-fo.patch | 71 ++++++++++++++++++ ...use-the-first-argument-instead-of-th.patch | 73 +++++++++++++++++++ ...ard-fail-on-error-for-tpm-measure-64.patch | 49 +++++++++++++ ...nd-D-importd-should-be-combo-options.patch | 37 ++++++++++ ...cryptsetup-fix-infinite-timeout-6486.patch | 42 +++++++++++ ...eous-behavior-when-polling-the-udev-.patch | 45 ++++++++++++ ...-perpetual-mount-units-without-fragm.patch | 34 +++++++++ systemd.spec | 16 +++- 12 files changed, 487 insertions(+), 1 deletion(-) create mode 100644 0012-virt-enable-detecting-QEMU-TCG-via-CPUID-6399.patch create mode 100644 0013-test-condition-don-t-assume-that-all-non-root-users-.patch create mode 100644 0014-call-chase_symlinks-without-the-sysroot-prefix-6411.patch create mode 100644 0015-nspawn-downgrade-warning-when-we-get-sd_notify-messa.patch create mode 100644 0016-Revert-core-don-t-load-dropin-data-multiple-times-fo.patch create mode 100644 0017-bash-completion-use-the-first-argument-instead-of-th.patch create mode 100644 0018-boot-efi-don-t-hard-fail-on-error-for-tpm-measure-64.patch create mode 100644 0019-meson-D-remote-and-D-importd-should-be-combo-options.patch create mode 100644 0020-cryptsetup-fix-infinite-timeout-6486.patch create mode 100644 0021-rfkill-fix-erroneous-behavior-when-polling-the-udev-.patch create mode 100644 0022-core-Do-not-fail-perpetual-mount-units-without-fragm.patch diff --git a/0012-virt-enable-detecting-QEMU-TCG-via-CPUID-6399.patch b/0012-virt-enable-detecting-QEMU-TCG-via-CPUID-6399.patch new file mode 100644 index 0000000..5856ed0 --- /dev/null +++ b/0012-virt-enable-detecting-QEMU-TCG-via-CPUID-6399.patch @@ -0,0 +1,31 @@ +From e48936b0be085f15a2e2ac88b2e50a91a66782ac Mon Sep 17 00:00:00 2001 +From: Daniel Berrange +Date: Wed, 19 Jul 2017 10:06:07 +0100 +Subject: [PATCH] virt: enable detecting QEMU (TCG) via CPUID (#6399) + +QEMU >= 2.10 will include a CPUID leaf with value "TCGTCGTCGTCG" +on x86 when running with the TCG CPU emulator: + + https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg05231.html + +Existing methods of detecting QEMU are left unchanged for sake of +backcompatibility. + +Signed-off-by: Daniel P. Berrange +(cherry picked from commit 5588612e9e8828691f13141e3fcebe08a59201fe) +--- + src/basic/virt.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/basic/virt.c b/src/basic/virt.c +index 6011744523..5143ac6656 100644 +--- a/src/basic/virt.c ++++ b/src/basic/virt.c +@@ -46,6 +46,7 @@ static int detect_vm_cpuid(void) { + } cpuid_vendor_table[] = { + { "XenVMMXenVMM", VIRTUALIZATION_XEN }, + { "KVMKVMKVM", VIRTUALIZATION_KVM }, ++ { "TCGTCGTCGTCG", VIRTUALIZATION_QEMU }, + /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */ + { "VMwareVMware", VIRTUALIZATION_VMWARE }, + /* https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs */ diff --git a/0013-test-condition-don-t-assume-that-all-non-root-users-.patch b/0013-test-condition-don-t-assume-that-all-non-root-users-.patch new file mode 100644 index 0000000..8212cd4 --- /dev/null +++ b/0013-test-condition-don-t-assume-that-all-non-root-users-.patch @@ -0,0 +1,28 @@ +From 8864ff594b43a34e5a593da42336f28e2f30b9f5 Mon Sep 17 00:00:00 2001 +From: Felipe Sateler +Date: Wed, 19 Jul 2017 20:48:23 -0400 +Subject: [PATCH] test-condition: don't assume that all non-root users are + normal users (#6409) + +Automated builders may run under a dedicated system user, and this test would fail that + +Fixes #6366 + +(cherry picked from commit 708d423915c4ea48d408b5a3395c11055247b9bc) +--- + src/test/test-condition.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/test/test-condition.c b/src/test/test-condition.c +index 121345cfd1..b15f1b98c0 100644 +--- a/src/test/test-condition.c ++++ b/src/test/test-condition.c +@@ -390,7 +390,7 @@ static void test_condition_test_user(void) { + assert_se(condition); + r = condition_test(condition); + log_info("ConditionUser=@system → %i", r); +- if (geteuid() == 0) ++ if (getuid() < SYSTEM_UID_MAX || geteuid() < SYSTEM_UID_MAX) + assert_se(r > 0); + else + assert_se(r == 0); diff --git a/0014-call-chase_symlinks-without-the-sysroot-prefix-6411.patch b/0014-call-chase_symlinks-without-the-sysroot-prefix-6411.patch new file mode 100644 index 0000000..79a140d --- /dev/null +++ b/0014-call-chase_symlinks-without-the-sysroot-prefix-6411.patch @@ -0,0 +1,31 @@ +From eca55fbc51056b2a4fa3242917b6fc2f0c02e981 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 20 Jul 2017 19:13:09 +0200 +Subject: [PATCH] call chase_symlinks without the /sysroot prefix (#6411) + +In case fstab-generator is called in the initrd, chase_symlinks() +returns with a canonical path "/sysroot/sysroot/", if the +"/sysroot" prefix is present in the path. + +This patch skips the "/sysroot" prefix for the chase_symlinks() call, +because "/sysroot" is already the root directory and chase_symlinks() +prepends the root directory in the canonical path returned. + +(cherry picked from commit 98eda38aed6a10c4f6d6ad0cac6e5361e87de52b) +--- + src/fstab-generator/fstab-generator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c +index 7f23b9fd74..f172e9c07b 100644 +--- a/src/fstab-generator/fstab-generator.c ++++ b/src/fstab-generator/fstab-generator.c +@@ -537,7 +537,7 @@ static int parse_fstab(bool initrd) { + continue; + } + +- where = initrd ? strappend("/sysroot/", me->mnt_dir) : strdup(me->mnt_dir); ++ where = strdup(me->mnt_dir); + if (!where) + return log_oom(); + diff --git a/0015-nspawn-downgrade-warning-when-we-get-sd_notify-messa.patch b/0015-nspawn-downgrade-warning-when-we-get-sd_notify-messa.patch new file mode 100644 index 0000000..0dc1b02 --- /dev/null +++ b/0015-nspawn-downgrade-warning-when-we-get-sd_notify-messa.patch @@ -0,0 +1,31 @@ +From 0e50428d3699e3ad25861f458540d24038cfaa4e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 20 Jul 2017 20:46:58 +0200 +Subject: [PATCH] nspawn: downgrade warning when we get sd_notify() message + from unexpected process (#6416) + +Given that we set NOTIFY_SOCKET unconditionally it's not surprising that +processes way down the process tree think it's smart to send us a +notification message. + +It's still useful to keep this message, for debugging things, but it +shouldn't be generated by default. + +(cherry picked from commit 8cb574307963d1aeb1c53e1d1fbeee4a2be37259) +--- + src/nspawn/nspawn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index 8a5fedd4b0..0cbd8c3491 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -2836,7 +2836,7 @@ static int nspawn_dispatch_notify_fd(sd_event_source *source, int fd, uint32_t r + } + + if (!ucred || ucred->pid != inner_child_pid) { +- log_warning("Received notify message without valid credentials. Ignoring."); ++ log_debug("Received notify message without valid credentials. Ignoring."); + return 0; + } + diff --git a/0016-Revert-core-don-t-load-dropin-data-multiple-times-fo.patch b/0016-Revert-core-don-t-load-dropin-data-multiple-times-fo.patch new file mode 100644 index 0000000..383d5bd --- /dev/null +++ b/0016-Revert-core-don-t-load-dropin-data-multiple-times-fo.patch @@ -0,0 +1,71 @@ +From 29d9cfc097586ac79911a5f5035c45b1971a5b1f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 22 Jul 2017 08:39:49 -0400 +Subject: [PATCH] Revert "core: don't load dropin data multiple times for the + same unit (#5139)" + +This reverts commit 2d058a87ffb2d31a50422a8aebd119bbb4427244. + +When we add another name to a unit (by following an alias), we need to +reload all drop-ins. This is necessary to load any additional dropins +found in the dirs created from the alias name. + +Fixes #6334. + +(cherry picked from commit 9e4ea9cc34fa032a47c253ddd94ac6c7afda663e) +--- + src/core/unit.c | 23 +++++++---------------- + 1 file changed, 7 insertions(+), 16 deletions(-) + +diff --git a/src/core/unit.c b/src/core/unit.c +index b28eeb2262..9d913e8c64 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -1098,7 +1098,6 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { + + /* Common implementation for multiple backends */ + int unit_load_fragment_and_dropin(Unit *u) { +- Unit *t; + int r; + + assert(u); +@@ -1111,18 +1110,15 @@ int unit_load_fragment_and_dropin(Unit *u) { + if (u->load_state == UNIT_STUB) + return -ENOENT; + +- /* If the unit is an alias and the final unit has already been +- * loaded, there's no point in reloading the dropins one more time. */ +- t = unit_follow_merge(u); +- if (t != u && t->load_state != UNIT_STUB) +- return 0; +- +- return unit_load_dropin(t); ++ /* Load drop-in directory data. If u is an alias, we might be reloading the ++ * target unit needlessly. But we cannot be sure which drops-ins have already ++ * been loaded and which not, at least without doing complicated book-keeping, ++ * so let's always reread all drop-ins. */ ++ return unit_load_dropin(unit_follow_merge(u)); + } + + /* Common implementation for multiple backends */ + int unit_load_fragment_and_dropin_optional(Unit *u) { +- Unit *t; + int r; + + assert(u); +@@ -1138,13 +1134,8 @@ int unit_load_fragment_and_dropin_optional(Unit *u) { + if (u->load_state == UNIT_STUB) + u->load_state = UNIT_LOADED; + +- /* If the unit is an alias and the final unit has already been +- * loaded, there's no point in reloading the dropins one more time. */ +- t = unit_follow_merge(u); +- if (t != u && t->load_state != UNIT_STUB) +- return 0; +- +- return unit_load_dropin(t); ++ /* Load drop-in directory data */ ++ return unit_load_dropin(unit_follow_merge(u)); + } + + int unit_add_default_target_dependency(Unit *u, Unit *target) { diff --git a/0017-bash-completion-use-the-first-argument-instead-of-th.patch b/0017-bash-completion-use-the-first-argument-instead-of-th.patch new file mode 100644 index 0000000..82333fe --- /dev/null +++ b/0017-bash-completion-use-the-first-argument-instead-of-th.patch @@ -0,0 +1,73 @@ +From f6441eaf050267c05ef8df8d5614bb598528942f Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 27 Jul 2017 20:22:54 +0900 +Subject: [PATCH] bash-completion: use the first argument instead of the global + variable (#6457) + +Without this fix: + +$ systemctl start +Display all 135 possibilities? (y or n) +$ __get_startable_units --system | wc -l +224 + +the number of the suggestions are quite different, as __get_startable_units --system does +not filter already started units. With this fix, + +$ systemctl start +Display all 135 possibilities? (y or n) +$ __get_startable_units --system | wc -l +123 +$ __get_template_names --system | wc -l +12 + +the number of the suggestions matches one the function returns. +For consistency with the other internal functions, it should use the first argument +instead of the global variable $mode. + +[zj: add commit message to make it sound like we know what we're doing] + +(cherry picked from commit 6bda23dd6aaba50cf8e3e6024248cf736cc443ca) +--- + shell-completion/bash/systemctl.in | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in +index 0398d09d18..bde28efc3e 100644 +--- a/shell-completion/bash/systemctl.in ++++ b/shell-completion/bash/systemctl.in +@@ -68,7 +68,7 @@ __filter_units_by_properties () { + done + for ((i=0; i < ${#units[*]}; i++)); do + for ((j=0; j < ${#conditions[*]}; j++)); do +- if [[ "${props[ i * ${#conditions[*]} + j]}" != "${conditions[j]}" ]]; then ++ if [[ "${props[i * ${#conditions[*]} + j]}" != "${conditions[j]}" ]]; then + break + fi + done +@@ -87,19 +87,19 @@ __get_active_units () { __systemctl $1 list-units \ + | { while read -r a b; do echo " $a"; done; }; } + __get_startable_units () { + # find startable inactive units +- __filter_units_by_properties $mode ActiveState,CanStart inactive,yes $( +- { __systemctl $mode list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient | \ ++ __filter_units_by_properties $1 ActiveState,CanStart inactive,yes $( ++ { __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient | \ + { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } +- __systemctl $mode list-units --state inactive,failed | \ ++ __systemctl $1 list-units --state inactive,failed | \ + { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } + } | sort -u ) + } + __get_restartable_units () { + # filter out masked and not-found +- __filter_units_by_property $mode CanStart yes $( +- __systemctl $mode list-unit-files --state enabled,disabled,static | \ ++ __filter_units_by_property $1 CanStart yes $( ++ __systemctl $1 list-unit-files --state enabled,disabled,static | \ + { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } +- __systemctl $mode list-units | \ ++ __systemctl $1 list-units | \ + { while read -r a b; do echo " $a"; done; } ) + } + __get_failed_units () { __systemctl $1 list-units \ diff --git a/0018-boot-efi-don-t-hard-fail-on-error-for-tpm-measure-64.patch b/0018-boot-efi-don-t-hard-fail-on-error-for-tpm-measure-64.patch new file mode 100644 index 0000000..6d5976f --- /dev/null +++ b/0018-boot-efi-don-t-hard-fail-on-error-for-tpm-measure-64.patch @@ -0,0 +1,49 @@ +From ea0ff5cd4efb1d67820572fb0d7d1d8da0fc1dc1 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 28 Jul 2017 09:46:05 +0200 +Subject: [PATCH] boot/efi: don't hard fail on error for tpm measure (#6473) + +Display the error for a small amount of time, but don't fail hard. + +In case of a faulty BIOS, a TPM error should not prevent the boot. +If something cares about the PCM measurement, it will be noticed +anyway later on. + +Especially important now, that TPM measurement is the default now on +some distribution builds. + +https://bugzilla.redhat.com/show_bug.cgi?id=1411156 +(cherry picked from commit 522aa9f5f8755d7389131da41bd60b6276917ff2) +--- + src/boot/efi/boot.c | 3 +-- + src/boot/efi/stub.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c +index 1e990b3825..316e95a72b 100644 +--- a/src/boot/efi/boot.c ++++ b/src/boot/efi/boot.c +@@ -1657,8 +1657,7 @@ static EFI_STATUS image_start(EFI_HANDLE parent_image, const Config *config, con + loaded_image->LoadOptionsSize, loaded_image->LoadOptions); + if (EFI_ERROR(err)) { + Print(L"Unable to add image options measurement: %r", err); +- uefi_call_wrapper(BS->Stall, 1, 3 * 1000 * 1000); +- return err; ++ uefi_call_wrapper(BS->Stall, 1, 200 * 1000); + } + #endif + } +diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c +index bab5d46de9..2562228090 100644 +--- a/src/boot/efi/stub.c ++++ b/src/boot/efi/stub.c +@@ -94,8 +94,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { + loaded_image->LoadOptionsSize, loaded_image->LoadOptions); + if (EFI_ERROR(err)) { + Print(L"Unable to add image options measurement: %r", err); +- uefi_call_wrapper(BS->Stall, 1, 3 * 1000 * 1000); +- return err; ++ uefi_call_wrapper(BS->Stall, 1, 200 * 1000); + } + #endif + } diff --git a/0019-meson-D-remote-and-D-importd-should-be-combo-options.patch b/0019-meson-D-remote-and-D-importd-should-be-combo-options.patch new file mode 100644 index 0000000..6d79dce --- /dev/null +++ b/0019-meson-D-remote-and-D-importd-should-be-combo-options.patch @@ -0,0 +1,37 @@ +From 9c27ced1fac191139a131d179a25801ce9ca3357 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 26 Jul 2017 14:11:15 -0400 +Subject: [PATCH] meson: -D remote and -D importd should be "combo" options + +The default should be 'auto', and we allow 'true' +and 'false' too. + +Fixes #6445. + +(cherry picked from commit b1519d656691e725a8b8950fc0e6cc8d25b1016a) +--- + meson_options.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/meson_options.txt b/meson_options.txt +index 1594fec41f..b7a45d5806 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -69,7 +69,7 @@ option('timedated', type : 'boolean', + description : 'install the systemd-timedated daemon') + option('timesyncd', type : 'boolean', + description : 'install the systemd-timesyncd daemon') +-option('remote', type : 'boolean', ++option('remote', type : 'combo', choices : ['auto', 'true', 'false'], + description : 'support for "journal over the network"') + option('myhostname', type : 'boolean', + description : 'nss-myhostname support') +@@ -87,7 +87,7 @@ option('sysusers', type : 'boolean', + description : 'support for the sysusers configuration') + option('tmpfiles', type : 'boolean', + description : 'support for tmpfiles.d') +-option('importd', type : 'boolean', ++option('importd', type : 'combo', choices : ['auto', 'true', 'false'], + description : 'install the systemd-importd daemon') + option('hwdb', type : 'boolean', + description : 'support for the hardware database') diff --git a/0020-cryptsetup-fix-infinite-timeout-6486.patch b/0020-cryptsetup-fix-infinite-timeout-6486.patch new file mode 100644 index 0000000..860d816 --- /dev/null +++ b/0020-cryptsetup-fix-infinite-timeout-6486.patch @@ -0,0 +1,42 @@ +From c64c6a8b259abfbff5ce202d5d5982b120cf928f Mon Sep 17 00:00:00 2001 +From: Andrew Soutar +Date: Mon, 31 Jul 2017 02:19:16 -0400 +Subject: [PATCH] cryptsetup: fix infinite timeout (#6486) + +0004f698d causes `arg_timeout` to be infinity instead of 0 when timeout=0. The +logic here now matches this change. + +Fixes #6381 + +(cherry picked from commit 0864d311766498563331f486909a0d950ba7de87) +--- + src/cryptsetup/cryptsetup.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c +index 3b4c086162..08ed7e53ba 100644 +--- a/src/cryptsetup/cryptsetup.c ++++ b/src/cryptsetup/cryptsetup.c +@@ -56,7 +56,7 @@ static bool arg_tcrypt_veracrypt = false; + static char **arg_tcrypt_keyfiles = NULL; + static uint64_t arg_offset = 0; + static uint64_t arg_skip = 0; +-static usec_t arg_timeout = 0; ++static usec_t arg_timeout = USEC_INFINITY; + + /* Options Debian's crypttab knows we don't: + +@@ -670,10 +670,10 @@ int main(int argc, char *argv[]) { + if (arg_discards) + flags |= CRYPT_ACTIVATE_ALLOW_DISCARDS; + +- if (arg_timeout > 0) +- until = now(CLOCK_MONOTONIC) + arg_timeout; +- else ++ if (arg_timeout == USEC_INFINITY) + until = 0; ++ else ++ until = now(CLOCK_MONOTONIC) + arg_timeout; + + arg_key_size = (arg_key_size > 0 ? arg_key_size : (256 / 8)); + diff --git a/0021-rfkill-fix-erroneous-behavior-when-polling-the-udev-.patch b/0021-rfkill-fix-erroneous-behavior-when-polling-the-udev-.patch new file mode 100644 index 0000000..4790389 --- /dev/null +++ b/0021-rfkill-fix-erroneous-behavior-when-polling-the-udev-.patch @@ -0,0 +1,45 @@ +From cb81159ce49380d39c80f803353784633b8f306c Mon Sep 17 00:00:00 2001 +From: "S. Fan" +Date: Mon, 31 Jul 2017 05:10:10 -0500 +Subject: [PATCH] rfkill: fix erroneous behavior when polling the udev monitor + (#6489) + +Comparing udev_device_get_sysname(device) and sysname will always return +true. We need to check the device received from udev monitor instead. + +Also, fd_wait_for_event() sometimes never exits. Better set a timeout +here. + +(cherry picked from commit 8ec1a07998758f6a85f3ea5bf2ed14d87609398f) +--- + src/rfkill/rfkill.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c +index c0f138b4f4..470853d1d2 100644 +--- a/src/rfkill/rfkill.c ++++ b/src/rfkill/rfkill.c +@@ -138,17 +138,21 @@ static int wait_for_initialized( + for (;;) { + _cleanup_udev_device_unref_ struct udev_device *t = NULL; + +- r = fd_wait_for_event(watch_fd, POLLIN, USEC_INFINITY); ++ r = fd_wait_for_event(watch_fd, POLLIN, EXIT_USEC); + if (r == -EINTR) + continue; + if (r < 0) + return log_error_errno(r, "Failed to watch udev monitor: %m"); ++ if (r == 0) { ++ log_error("Timed out wating for udev monitor."); ++ return -ETIMEDOUT; ++ } + + t = udev_monitor_receive_device(monitor); + if (!t) + continue; + +- if (streq_ptr(udev_device_get_sysname(device), sysname)) { ++ if (streq_ptr(udev_device_get_sysname(t), sysname)) { + *ret = udev_device_ref(t); + return 0; + } diff --git a/0022-core-Do-not-fail-perpetual-mount-units-without-fragm.patch b/0022-core-Do-not-fail-perpetual-mount-units-without-fragm.patch new file mode 100644 index 0000000..f310a4f --- /dev/null +++ b/0022-core-Do-not-fail-perpetual-mount-units-without-fragm.patch @@ -0,0 +1,34 @@ +From b56c4c19c8d0adca67eb34e1924d881e7d61b97f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Abd=C3=B3=20Roig-Maranges?= +Date: Mon, 31 Jul 2017 12:32:09 +0200 +Subject: [PATCH] core: Do not fail perpetual mount units without fragment + (#6459) + +mount_load does not require fragment files to be present in order to +load mount units which are perpetual, or come from /proc/self/mountinfo. + +mount_verify should do the same, otherwise a synthesized '-.mount' would +be marked as failed with "No such file or directory", as it is perpetual +but not marked to come from /proc/self/mountinfo at this point. + +This happens for the user instance, and I suspect it was the cause of #5375 +for the system instance, without gpt-generator. + +(cherry picked from commit 1df96fcb31b3bc30c4a983de4734f61ed5a29115) +--- + src/core/mount.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/mount.c b/src/core/mount.c +index 214364d87d..7d9644e305 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -503,7 +503,7 @@ static int mount_verify(Mount *m) { + if (UNIT(m)->load_state != UNIT_LOADED) + return 0; + +- if (!m->from_fragment && !m->from_proc_self_mountinfo) ++ if (!m->from_fragment && !m->from_proc_self_mountinfo && !UNIT(m)->perpetual) + return -ENOENT; + + r = unit_name_from_path(m->where, ".mount", &e); diff --git a/systemd.spec b/systemd.spec index 4eb0224..4f9fa7c 100644 --- a/systemd.spec +++ b/systemd.spec @@ -13,7 +13,7 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd Version: 234 -Release: 4%{?gitcommit:.git%{gitcommitshort}}%{?dist} +Release: 5%{?gitcommit:.git%{gitcommitshort}}%{?dist} # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: System and Service Manager @@ -57,6 +57,17 @@ Patch0008: 0008-core-modify-resource-leak-by-SmackProcessLabel.patch Patch0009: 0009-core-dump-also-missed-security-context.patch Patch0010: 0010-journald-make-sure-we-retain-all-stream-fds-across-r.patch Patch0011: 0011-Use-config_parse_sec_fix_0-also-for-JobRunningTimeou.patch +Patch0012: 0012-virt-enable-detecting-QEMU-TCG-via-CPUID-6399.patch +Patch0013: 0013-test-condition-don-t-assume-that-all-non-root-users-.patch +Patch0014: 0014-call-chase_symlinks-without-the-sysroot-prefix-6411.patch +Patch0015: 0015-nspawn-downgrade-warning-when-we-get-sd_notify-messa.patch +Patch0016: 0016-Revert-core-don-t-load-dropin-data-multiple-times-fo.patch +Patch0017: 0017-bash-completion-use-the-first-argument-instead-of-th.patch +Patch0018: 0018-boot-efi-don-t-hard-fail-on-error-for-tpm-measure-64.patch +Patch0019: 0019-meson-D-remote-and-D-importd-should-be-combo-options.patch +Patch0020: 0020-cryptsetup-fix-infinite-timeout-6486.patch +Patch0021: 0021-rfkill-fix-erroneous-behavior-when-polling-the-udev-.patch +Patch0022: 0022-core-Do-not-fail-perpetual-mount-units-without-fragm.patch Patch0998: 0998-resolved-create-etc-resolv.conf-symlink-at-runtime.patch @@ -1039,6 +1050,9 @@ getent passwd systemd-journal-upload &>/dev/null || useradd -r -l -g systemd-jou %{pkgdir}/tests %changelog +* Mon Jul 31 2017 Zbigniew Jędrzejewski-Szmek - 234-5 +- Backport more patches (#1476005, hopefully #1462378) + * Thu Jul 27 2017 Fedora Release Engineering - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild