diff options
Diffstat (limited to 'meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd')
3 files changed, 141 insertions, 97 deletions
diff --git a/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch b/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch new file mode 100644 index 00000000..29165b58 --- /dev/null +++ b/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch @@ -0,0 +1,34 @@ +Fix udevd SECLABEL token parsing + +The udevd rules parsing rewrite in v243 broke SECLABEL parsing, +with the result being that udevd crashes when it parses a line +containing a SECLABEL token. Fix the handling of the attribute +of SECLABEL tokens when parsing, and add a check to prevent +crashes if the attribute is missing. + +Upstream-Status: Pending + +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c +index efea16e5c5..3e757ccb06 100644 +--- a/src/udev/udev-rules.c ++++ b/src/udev/udev-rules.c +@@ -918,7 +918,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp + op = OP_ASSIGN; + } + +- r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, NULL); ++ r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, attr); + } else if (streq(key, "RUN")) { + if (is_match || op == OP_REMOVE) + return log_token_invalid_op(rules, key); +@@ -1927,6 +1927,8 @@ static int udev_rule_apply_token_to_event( + _cleanup_free_ char *name = NULL, *label = NULL; + char label_str[UTIL_LINE_SIZE] = {}; + ++ if (!token->data) ++ break; + name = strdup((const char*) token->data); + if (!name) + return log_oom(); diff --git a/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-network-add-CAN-Termination-tristate-option.patch b/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-network-add-CAN-Termination-tristate-option.patch deleted file mode 100644 index 3bc7a8f2..00000000 --- a/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0001-network-add-CAN-Termination-tristate-option.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 2885f0936d3069fba7bb0078897c98f50927875c Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Wed, 19 Feb 2020 12:14:53 -0800 -Subject: [PATCH] network: add CAN Termination tristate option - -Upstream-Status: Submitted -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - src/libsystemd/sd-netlink/netlink-types.c | 1 + - src/network/networkd-link.c | 13 +++++++++++++ - src/network/networkd-network-gperf.gperf | 1 + - src/network/networkd-network.c | 1 + - src/network/networkd-network.h | 1 + - 5 files changed, 17 insertions(+) - -diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c -index c93fe9cb4c..0ce950d5af 100644 ---- a/src/libsystemd/sd-netlink/netlink-types.c -+++ b/src/libsystemd/sd-netlink/netlink-types.c -@@ -298,6 +298,7 @@ static const NLType rtnl_link_info_data_geneve_types[] = { - static const NLType rtnl_link_info_data_can_types[] = { - [IFLA_CAN_BITTIMING] = { .size = sizeof(struct can_bittiming) }, - [IFLA_CAN_RESTART_MS] = { .type = NETLINK_TYPE_U32 }, -+ [IFLA_CAN_TERMINATION] = { .type = NETLINK_TYPE_U16 }, - }; - - /* these strings must match the .kind entries in the kernel */ -diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c -index 4afcf843bd..af1c4ef55c 100644 ---- a/src/network/networkd-link.c -+++ b/src/network/networkd-link.c -@@ -27,6 +27,8 @@ - #include "util.h" - #include "virt.h" - -+#define CAN_TERMINATION_OHM_VALUE 120 -+ - static bool link_dhcp6_enabled(Link *link) { - assert(link); - -@@ -1938,6 +1940,17 @@ static int link_set_can(Link *link) { - return log_link_error_errno(link, r, "Could not append IFLA_CAN_RESTART_MS attribute: %m"); - } - -+ if (link->network->can_termination >= 0) { -+ -+ log_link_debug(link, "%sabling can-termination", link->network->can_termination ? "En" : "Dis"); -+ -+ r = sd_netlink_message_append_u16(m, IFLA_CAN_TERMINATION, -+ link->network->can_termination ? CAN_TERMINATION_OHM_VALUE : 0); -+ if (r < 0) -+ return log_link_error_errno(link, r, "Could not append IFLA_CAN_TERMINATION attribute: %m"); -+ -+ } -+ - r = sd_netlink_message_close_container(m); - if (r < 0) - return log_link_error_errno(link, r, "Failed to close netlink container: %m"); -diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf -index 6ad5257f79..2f6b42809f 100644 ---- a/src/network/networkd-network-gperf.gperf -+++ b/src/network/networkd-network-gperf.gperf -@@ -182,6 +182,7 @@ IPv6Prefix.PreferredLifetimeSec, config_parse_prefix_lifetime, - CAN.BitRate, config_parse_si_size, 0, offsetof(Network, can_bitrate) - CAN.SamplePoint, config_parse_permille, 0, offsetof(Network, can_sample_point) - CAN.RestartSec, config_parse_sec, 0, offsetof(Network, can_restart_us) -+CAN.Termination, config_parse_tristate, 0, offsetof(Network, can_termination) - /* backwards compatibility: do not add new entries to this section */ - Network.IPv4LL, config_parse_ipv4ll, 0, offsetof(Network, link_local) - DHCPv4.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_use_dns) -diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c -index 429aac5e6c..ded66f5f43 100644 ---- a/src/network/networkd-network.c -+++ b/src/network/networkd-network.c -@@ -248,6 +248,7 @@ static int network_load_one(Manager *manager, const char *filename) { - network->ipv6_accept_ra_use_dns = true; - network->ipv6_accept_ra_route_table = RT_TABLE_MAIN; - network->ipv6_mtu = 0; -+ network->can_termination = -1; - - dropin_dirname = strjoina(network->name, ".network.d"); - -diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h -index 2d46d393ac..1178510107 100644 ---- a/src/network/networkd-network.h -+++ b/src/network/networkd-network.h -@@ -190,6 +190,7 @@ struct Network { - size_t can_bitrate; - unsigned can_sample_point; - usec_t can_restart_us; -+ int can_termination; - - AddressFamilyBoolean ip_forward; - bool ip_masquerade; --- -2.25.0 - diff --git a/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch b/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch new file mode 100644 index 00000000..feaff273 --- /dev/null +++ b/meta-agl/meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch @@ -0,0 +1,107 @@ +From 1e6ffb3129340291027d2690631f62eb7d0e0a78 Mon Sep 17 00:00:00 2001 +From: Matt Ranostay <matt.ranostay@konsulko.com> +Date: Tue, 11 Feb 2020 18:13:45 -0800 +Subject: [PATCH] network: add CAN Termination tristate option + +Upstream-Status: Submitted +Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> +--- + src/libsystemd/sd-netlink/netlink-types.c | 1 + + src/network/networkd-can.c | 13 +++++++++++++ + src/network/networkd-network-gperf.gperf | 1 + + src/network/networkd-network.c | 1 + + src/network/networkd-network.h | 1 + + test/fuzz/fuzz-network-parser/directives.network | 1 + + 6 files changed, 18 insertions(+) + +diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c +index a55460f034..96e211dcf0 100644 +--- a/src/libsystemd/sd-netlink/netlink-types.c ++++ b/src/libsystemd/sd-netlink/netlink-types.c +@@ -316,6 +316,7 @@ static const NLType rtnl_link_info_data_can_types[] = { + [IFLA_CAN_BITTIMING] = { .size = sizeof(struct can_bittiming) }, + [IFLA_CAN_RESTART_MS] = { .type = NETLINK_TYPE_U32 }, + [IFLA_CAN_CTRLMODE] = { .size = sizeof(struct can_ctrlmode) }, ++ [IFLA_CAN_TERMINATION] = { .type = NETLINK_TYPE_U16 }, + }; + + static const NLType rtnl_link_info_data_macsec_types[] = { +diff --git a/src/network/networkd-can.c b/src/network/networkd-can.c +index 5755df57bd..3abe8ae2ed 100644 +--- a/src/network/networkd-can.c ++++ b/src/network/networkd-can.c +@@ -9,6 +9,8 @@ + #include "networkd-manager.h" + #include "string-util.h" + ++#define CAN_TERMINATION_OHM_VALUE 120 ++ + static int link_up_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) { + int r; + +@@ -152,6 +154,17 @@ static int link_set_can(Link *link) { + return log_link_error_errno(link, r, "Could not append IFLA_CAN_CTRLMODE attribute: %m"); + } + ++ if (link->network->can_termination >= 0) { ++ ++ log_link_debug(link, "%sabling can-termination", link->network->can_termination ? "En" : "Dis"); ++ ++ r = sd_netlink_message_append_u16(m, IFLA_CAN_TERMINATION, ++ link->network->can_termination ? CAN_TERMINATION_OHM_VALUE : 0); ++ if (r < 0) ++ return log_link_error_errno(link, r, "Could not append IFLA_CAN_TERMINATION attribute: %m"); ++ ++ } ++ + r = sd_netlink_message_close_container(m); + if (r < 0) + return log_link_error_errno(link, r, "Failed to close netlink container: %m"); +diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf +index f7e68be181..b3df4f3960 100644 +--- a/src/network/networkd-network-gperf.gperf ++++ b/src/network/networkd-network-gperf.gperf +@@ -245,6 +245,7 @@ CAN.BitRate, config_parse_si_size, + CAN.SamplePoint, config_parse_permille, 0, offsetof(Network, can_sample_point) + CAN.RestartSec, config_parse_sec, 0, offsetof(Network, can_restart_us) + CAN.TripleSampling, config_parse_tristate, 0, offsetof(Network, can_triple_sampling) ++CAN.Termination, config_parse_tristate, 0, offsetof(Network, can_termination) + TrafficControlQueueingDiscipline.Parent, config_parse_tc_qdiscs_parent, 0, 0 + TrafficControlQueueingDiscipline.NetworkEmulatorDelaySec, config_parse_tc_network_emulator_delay, 0, 0 + TrafficControlQueueingDiscipline.NetworkEmulatorDelayJitterSec, config_parse_tc_network_emulator_delay, 0, 0 +diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c +index 6e443975f1..0ea5c05db7 100644 +--- a/src/network/networkd-network.c ++++ b/src/network/networkd-network.c +@@ -448,6 +448,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi + .keep_configuration = _KEEP_CONFIGURATION_INVALID, + + .can_triple_sampling = -1, ++ .can_termination = -1, + .ip_service_type = -1, + }; + +diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h +index aa74bb4ae7..6a1f094156 100644 +--- a/src/network/networkd-network.h ++++ b/src/network/networkd-network.h +@@ -193,6 +193,7 @@ struct Network { + unsigned can_sample_point; + usec_t can_restart_us; + int can_triple_sampling; ++ int can_termination; + + AddressFamily ip_forward; + bool ip_masquerade; +diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network +index 5bd80dece8..781269d960 100644 +--- a/test/fuzz/fuzz-network-parser/directives.network ++++ b/test/fuzz/fuzz-network-parser/directives.network +@@ -194,6 +194,7 @@ SamplePoint= + BitRate= + RestartSec= + TripleSampling= ++Termination= + [Address] + DuplicateAddressDetection= + AutoJoin= |