From 549b47247da871aa4eb54b0075511db6ede25be9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 12 Dec 2018 20:38:43 +0100 Subject: [PATCH 1/5] fstab-generator: remove spurious newline --- src/fstab-generator/fstab-generator.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 616b42f33f..55a8242fcf 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -61,7 +61,6 @@ STATIC_DESTRUCTOR_REGISTER(arg_usr_what, freep); STATIC_DESTRUCTOR_REGISTER(arg_usr_fstype, freep); STATIC_DESTRUCTOR_REGISTER(arg_usr_options, freep); - static int write_options(FILE *f, const char *options) { _cleanup_free_ char *o = NULL; From 4783e5ad3dbacd99e8818440961be1ef179a9373 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 14 Dec 2018 11:44:43 +0100 Subject: [PATCH 2/5] sd-128: base SD_ID128_MAKE() macro on existing SD_ID128_ARRAY() macro --- src/systemd/sd-id128.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index 78cf9462b0..dcc7e5b366 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -46,14 +46,14 @@ int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret); int sd_id128_get_boot(sd_id128_t *ret); int sd_id128_get_invocation(sd_id128_t *ret); -#define SD_ID128_MAKE(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) \ - ((const sd_id128_t) { .bytes = { 0x##v0, 0x##v1, 0x##v2, 0x##v3, 0x##v4, 0x##v5, 0x##v6, 0x##v7, \ - 0x##v8, 0x##v9, 0x##v10, 0x##v11, 0x##v12, 0x##v13, 0x##v14, 0x##v15 }}) - #define SD_ID128_ARRAY(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) \ { .bytes = { 0x##v0, 0x##v1, 0x##v2, 0x##v3, 0x##v4, 0x##v5, 0x##v6, 0x##v7, \ 0x##v8, 0x##v9, 0x##v10, 0x##v11, 0x##v12, 0x##v13, 0x##v14, 0x##v15 }} +#define SD_ID128_MAKE(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) \ + ((const sd_id128_t) SD_ID128_ARRAY(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)) + + /* Note that SD_ID128_FORMAT_VAL will evaluate the passed argument 16 * times. It is hence not a good idea to call this macro with an * expensive function as parameter or an expression with side From 463adf57105e2e7cc0a0c8eae48c07953ee6c68e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 14 Dec 2018 11:45:21 +0100 Subject: [PATCH 3/5] sd-id128: slightly reorder function prototypes Let's place the three calls for acquiring the IDs together, and the calls for getting the app-specific ones separate from them. --- src/systemd/sd-id128.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index dcc7e5b366..59f375bef5 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -41,11 +41,12 @@ int sd_id128_from_string(const char *s, sd_id128_t *ret); int sd_id128_randomize(sd_id128_t *ret); int sd_id128_get_machine(sd_id128_t *ret); -int sd_id128_get_machine_app_specific(sd_id128_t app_id, sd_id128_t *ret); -int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret); int sd_id128_get_boot(sd_id128_t *ret); int sd_id128_get_invocation(sd_id128_t *ret); +int sd_id128_get_machine_app_specific(sd_id128_t app_id, sd_id128_t *ret); +int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret); + #define SD_ID128_ARRAY(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) \ { .bytes = { 0x##v0, 0x##v1, 0x##v2, 0x##v3, 0x##v4, 0x##v5, 0x##v6, 0x##v7, \ 0x##v8, 0x##v9, 0x##v10, 0x##v11, 0x##v12, 0x##v13, 0x##v14, 0x##v15 }} From 670814387ba8973245c08123e7240669f51a55a8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 14 Dec 2018 11:46:07 +0100 Subject: [PATCH 4/5] sd-id128: add helpers to check fo all-0xFF ids --- NEWS | 4 ++++ src/systemd/sd-id128.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/NEWS b/NEWS index 2430fa115c..da3ea1342a 100644 --- a/NEWS +++ b/NEWS @@ -379,6 +379,10 @@ CHANGES WITH 240 in spe: interface names even as systemd/udev are updated and the naming logic is improved. + * sd-id128.h learnt two new auxiliary helpers: sd_id128_is_allf() and + SD_ID128_ALLF to test if a 128bit ID is set to all 0xFF bytes, and to + initialize one to all 0xFF. + Contributions from: afg, Alan Jenkins, Aleksei Timofeyev, Alexander Filippov, Alexander Kurtz, Alexey Bogdanenko, Andreas Henriksson, Andrew Jorgensen, Anita Zhang, apnix-uk, Arkan49, Arseny Maslennikov, diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index 59f375bef5..f4c05a3683 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -110,7 +110,12 @@ _sd_pure_ static __inline__ int sd_id128_is_null(sd_id128_t a) { return a.qwords[0] == 0 && a.qwords[1] == 0; } +_sd_pure_ static __inline__ int sd_id128_is_allf(sd_id128_t a) { + return a.qwords[0] == UINT64_C(0xFFFFFFFFFFFFFFFF) && a.qwords[1] == UINT64_C(0xFFFFFFFFFFFFFFFF); +} + #define SD_ID128_NULL ((const sd_id128_t) { .qwords = { 0, 0 }}) +#define SD_ID128_ALLF ((const sd_id128_t) { .qwords = { UINT64_C(0xFFFFFFFFFFFFFFFF), UINT64_C(0xFFFFFFFFFFFFFFFF) }}) _SD_END_DECLARATIONS; From 6839aa567ca023cda5fe80179938b3ef6f8df3f5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 12 Dec 2018 20:40:12 +0100 Subject: [PATCH 5/5] hostnamed: filter out all-zero and all-0xFF DMI ProductUUIDs These UUIDs are considered as wildcard value for "unset" UUIDs typically, and this even makes sense. Let's suppress them hence. --- src/hostname/hostnamed.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index c1f9e27523..e778132506 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -113,8 +113,12 @@ static int context_read_data(Context *c) { r = id128_read("/sys/class/dmi/id/product_uuid", ID128_UUID, &c->uuid); if (r < 0) - log_info_errno(r, "Failed to read product UUID, ignoring: %m"); - c->has_uuid = (r >= 0); + log_full_errno(r == -ENOENT ? LOG_DEBUG : LOG_WARNING, r, + "Failed to read product UUID, ignoring: %m"); + else if (sd_id128_is_null(c->uuid) || sd_id128_is_allf(c->uuid)) + log_debug("DMI product UUID " SD_ID128_FORMAT_STR " is all 0x00 or all 0xFF, ignoring.", SD_ID128_FORMAT_VAL(c->uuid)); + else + c->has_uuid = true; return 0; }