1
0
mirror of https://github.com/systemd/systemd synced 2026-04-04 06:04:51 +02:00

Compare commits

..

5 Commits

Author SHA1 Message Date
Luca Boccassi
a704137c20
Merge pull request #21273 from yuwata/hostname-device-tree
hostnamed: use /proc/device-tree to get chassis type
2021-11-10 23:15:20 +00:00
Yu Watanabe
9133c1877f netif-util: fix stack-use-after-scope
Fixes a bug introduced by 0295b2fd1d97c68010c7528af13e2952886d52e0.

Fixes #21292.
2021-11-10 22:11:18 +00:00
Yu Watanabe
e2b777f821 sd-id128: use /proc/device-tree 2021-11-11 04:42:50 +09:00
Yu Watanabe
c6dce5720c condition: use /proc/device-tree/ 2021-11-11 04:42:50 +09:00
Yu Watanabe
e6cbe6970f hostnamed: use /proc/device-tree to get chassis type
From https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-firmware-ofw
---
Userspace must not use the /sys/firmware/devicetree/base
path directly, but instead should follow /proc/device-tree
symlink. It is possible that the absolute path will change
in the future, but the symlink is the stable ABI.
---

Addresses the comment https://github.com/systemd/systemd/pull/20731#discussion_r744095262.
2021-11-11 04:42:50 +09:00
4 changed files with 7 additions and 12 deletions

View File

@ -302,7 +302,7 @@ try_acpi:
}
try_devicetree:
r = read_one_line_file("/sys/firmware/devicetree/base/chassis-type", &type);
r = read_one_line_file("/proc/device-tree/chassis-type", &type);
if (r < 0) {
log_debug_errno(r, "Failed to read device-tree chassis type, ignoring: %m");
return NULL;

View File

@ -219,7 +219,7 @@ int id128_get_product(sd_id128_t *ret) {
r = id128_read("/sys/class/dmi/id/product_uuid", ID128_UUID, &uuid);
if (r == -ENOENT)
r = id128_read("/sys/firmware/devicetree/base/vm,uuid", ID128_UUID, &uuid);
r = id128_read("/proc/device-tree/vm,uuid", ID128_UUID, &uuid);
if (r < 0)
return r;

View File

@ -509,7 +509,7 @@ static int condition_test_architecture(Condition *c, char **env) {
return a == b;
}
#define DTCOMPAT_FILE "/sys/firmware/devicetree/base/compatible"
#define DTCOMPAT_FILE "/proc/device-tree/compatible"
static int condition_test_firmware_devicetree_compatible(const char *dtcarg) {
int r;
_cleanup_free_ char *dtcompat = NULL;
@ -530,11 +530,8 @@ static int condition_test_firmware_devicetree_compatible(const char *dtcarg) {
return false;
}
/*
* /sys/firmware/devicetree/base/compatible consists of one or more
* strings, each ending in '\0'. So the last character in dtcompat must
* be a '\0'.
*/
/* /proc/device-tree/compatible consists of one or more strings, each ending in '\0'.
* So the last character in dtcompat must be a '\0'. */
if (dtcompat[size - 1] != '\0') {
log_debug("%s is in an unknown format, assuming machine is incompatible", DTCOMPAT_FILE);
return false;

View File

@ -67,7 +67,7 @@ int net_get_unique_predictable_data(sd_device *device, bool use_sysname, uint64_
log_device_debug(device, "Using \"%s\" as stable identifying information", name);
return net_get_unique_predictable_data_from_name(name, NULL, ret);
return net_get_unique_predictable_data_from_name(name, &HASH_KEY, ret);
}
int net_get_unique_predictable_data_from_name(
@ -80,11 +80,9 @@ int net_get_unique_predictable_data_from_name(
int r;
assert(name);
assert(key);
assert(ret);
if (!key)
key = &HASH_KEY;
l = strlen(name);
sz = sizeof(sd_id128_t) + l;
v = newa(uint8_t, sz);