import UBI NetworkManager-1.56.0-1.el10

This commit is contained in:
AlmaLinux RelEng Bot 2026-05-19 18:44:18 -04:00
parent 78c6b72c21
commit de66a3a802
6 changed files with 27 additions and 316 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
NetworkManager-1.54.0.tar.xz
NetworkManager-1.56.0.tar.xz

View File

@ -1,92 +0,0 @@
From bc8e8c4247bceffda6a9b3dcc7803b3ab84158a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@riseup.net>
Date: Thu, 9 Oct 2025 12:24:11 +0200
Subject: [PATCH] ovs: don't remove unrelated external ports
The commit linked below introduced a bug that caused that OVS ports
added externally to NM are always deleted when we delete any OVS
interface. It affects to all externally added ports, including those
that are not related to the deleted interface and even those in
different OVS bridges.
Fix it by only modifying ports and bridges that are ascendants of the
deleted interface, leaving everything else untouched.
Note that bridges and ports still need to have at least one NM-managed
interface, otherwise they will also be purged. For example, an NM-owned
OVS bridge with 2 ports+iface, one NM-owned and one external: if we
delete the NM-owned iface, both ports and the bridge will be deleted.
For now, this is a known limitation that is not being fixed here.
Fixes: 476c89b6f2cd ('ovs: only keep bridges and ports with NM interfaces attached')
(cherry picked from commit 93491d76ecf75c202ff82369e3eb72e7e6d37c8a)
(cherry picked from commit 8326cc32d64441dd993b5b1e73ded21d548efa6d)
---
src/core/devices/ovs/nm-ovsdb.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c
index 164bfd3565..1c9484c486 100644
--- a/src/core/devices/ovs/nm-ovsdb.c
+++ b/src/core/devices/ovs/nm-ovsdb.c
@@ -1460,40 +1460,42 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
json_array_append_new(new_interfaces, json_pack("[s,s]", "uuid", interface_uuid));
}
- if (num_nm_interfaces == 0) {
- /* The port no longer has any NM interface. Don't add it to "new_ports" and set
- * ports_changed=TRUE, so that it will be deleted. */
+ if (interfaces_changed && num_nm_interfaces == 0) {
+ /* We are deleting the last nm-interface of this port. Don't add it to "new_ports"
+ * and set ports_changed=TRUE, so that it will be deleted. */
ports_changed = TRUE;
} else {
+ /* Keep this port: it's still alive, or it's unrelated to the deleted interface */
+ json_array_append_new(new_ports, json_pack("[s,s]", "uuid", port_uuid));
+ if (ovs_port->connection_uuid)
+ num_nm_ports++;
+
if (interfaces_changed) {
- /* An interface needs to be deleted from this port */
+ /* This port is still alive, but an interface needs to be deleted from it */
_expect_port_interfaces(params, ovs_port->name, interfaces);
_set_port_interfaces(params, ovs_port->name, new_interfaces);
}
- /* The port is still alive */
- json_array_append_new(new_ports, json_pack("[s,s]", "uuid", port_uuid));
- if (ovs_port->connection_uuid)
- num_nm_ports++;
}
}
- if (num_nm_ports == 0) {
- /* The bridge no longer has any NM port. Don't add it to "new_bridges" and set
- * bridges_changed=TRUE, so that it will be deleted. */
+ if (ports_changed && num_nm_ports == 0) {
+ /* We are deleting the last nm-port of this bridge. Don't add it to "new_bridges"
+ * and set bridges_changed=TRUE, so that it will be deleted. */
bridges_changed = TRUE;
} else {
+ /* Keep this bridge: it's still alive, or it's unrelated to the deleted interface */
+ json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
+
if (ports_changed) {
- /* A port needs to be deleted from this bridge */
+ /* This bridge is still alive, but a port needs to be deleted from it */
_expect_bridge_ports(params, ovs_bridge->name, ports);
_set_bridge_ports(params, ovs_bridge->name, new_ports);
}
- /* The bridge is still alive */
- json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
}
}
if (bridges_changed) {
- /* A port needs to be deleted from this bridge */
+ /* A bridge needs to be deleted */
_expect_ovs_bridges(params, priv->db_uuid, bridges);
_set_ovs_bridges(params, priv->db_uuid, new_bridges);
}
--
2.50.1

View File

@ -1,178 +0,0 @@
From 59a54e8f9431f730b0d99d737be821988d7d867e Mon Sep 17 00:00:00 2001
From: Jan Vaclav <jvaclav@redhat.com>
Date: Thu, 14 Aug 2025 12:52:09 +0200
Subject: [PATCH 1/2] device: extract sriov platform vf generation to separate
function
(cherry picked from commit 588a69cd1b0e5bab7371f297c6450d17f5de9ab2)
(cherry picked from commit b2d8f60c4970401b4e981604eceaa37520052fcf)
---
src/core/devices/nm-device.c | 61 +++++++++++++++++++++++++-----------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index f6057e529f..d88d785422 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -10390,6 +10390,43 @@ sriov_params_cb(GError *error, gpointer user_data)
nm_device_activate_schedule_stage1_device_prepare(self, FALSE);
}
+static gboolean
+sriov_gen_platform_vfs(NMDevice *self,
+ NMSettingSriov *s_sriov,
+ NMPlatformVF ***plat_vfs_out,
+ GError **error)
+{
+ nm_auto_freev NMPlatformVF **plat_vfs = NULL;
+ guint num;
+
+ nm_assert(s_sriov);
+ nm_assert(plat_vfs_out && !*plat_vfs_out);
+
+ num = nm_setting_sriov_get_num_vfs(s_sriov);
+ plat_vfs = g_new0(NMPlatformVF *, num + 1);
+
+ for (int i = 0; i < num; i++) {
+ NMSriovVF *vf = nm_setting_sriov_get_vf(s_sriov, i);
+ gs_free_error GError *local = NULL;
+
+ plat_vfs[i] = sriov_vf_config_to_platform(self, vf, &local);
+
+ if (!plat_vfs[i]) {
+ g_set_error(error,
+ local->domain,
+ local->code,
+ "VF '%s' is invalid: %s",
+ nm_utils_sriov_vf_to_str(vf, FALSE, NULL),
+ local->message);
+ return FALSE;
+ }
+ }
+
+ *plat_vfs_out = g_steal_pointer(&plat_vfs);
+
+ return TRUE;
+}
+
/*
* activate_stage1_device_prepare
*
@@ -10436,10 +10473,7 @@ activate_stage1_device_prepare(NMDevice *self)
if (s_sriov && nm_device_has_capability(self, NM_DEVICE_CAP_SRIOV)) {
nm_auto_freev NMPlatformVF **plat_vfs = NULL;
gs_free_error GError *error = NULL;
- NMSriovVF *vf;
NMTernary autoprobe;
- guint num;
- guint i;
autoprobe = nm_setting_sriov_get_autoprobe_drivers(s_sriov);
if (autoprobe == NM_TERNARY_DEFAULT) {
@@ -10452,21 +10486,12 @@ activate_stage1_device_prepare(NMDevice *self)
NM_OPTION_BOOL_TRUE);
}
- num = nm_setting_sriov_get_num_vfs(s_sriov);
- plat_vfs = g_new0(NMPlatformVF *, num + 1);
- for (i = 0; i < num; i++) {
- vf = nm_setting_sriov_get_vf(s_sriov, i);
- plat_vfs[i] = sriov_vf_config_to_platform(self, vf, &error);
- if (!plat_vfs[i]) {
- _LOGE(LOGD_DEVICE,
- "failed to apply SR-IOV VF '%s': %s",
- nm_utils_sriov_vf_to_str(vf, FALSE, NULL),
- error->message);
- nm_device_state_changed(self,
- NM_DEVICE_STATE_FAILED,
- NM_DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED);
- return;
- }
+ if (!sriov_gen_platform_vfs(self, s_sriov, &plat_vfs, &error)) {
+ _LOGE(LOGD_DEVICE, "cannot parse the VF list: %s", error->message);
+ nm_device_state_changed(self,
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SRIOV_CONFIGURATION_FAILED);
+ return;
}
/* When changing the number of VFs the kernel can block
--
2.50.1
From 79e494539f6e0abfebb92f099c3c1242f13defec Mon Sep 17 00:00:00 2001
From: Jan Vaclav <jvaclav@redhat.com>
Date: Thu, 14 Aug 2025 13:00:53 +0200
Subject: [PATCH 2/2] device: add support for reapplying the `sriov.vfs`
property
Adds support for reapplying the `sriov.vfs` property. Note this
does not include `num_vfs`, as the configuration needs to be reset
and reconfigured from scratch in that case.
Previously, if an existing VF is modified (e.g. if we change the `trust`
flag), we reset all VF configurations, and started from scratch. But in
some cases, this is unnecessarily disruptive.
Resolves: https://issues.redhat.com/browse/RHEL-95844
(cherry picked from commit 4ba3ffee6788e6d8b75aff6c7aa21f92e45d5b9c)
(cherry picked from commit 6f454c98a98818e96ecd4f228f1e42febd2b2b32)
---
src/core/devices/nm-device.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index d88d785422..78301a9698 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -14087,7 +14087,8 @@ can_reapply_change(NMDevice *self,
return nm_device_hash_check_invalid_keys(diffs,
NM_SETTING_SRIOV_SETTING_NAME,
error,
- NM_SETTING_SRIOV_PRESERVE_ON_DOWN);
+ NM_SETTING_SRIOV_PRESERVE_ON_DOWN,
+ NM_SETTING_SRIOV_VFS);
}
out_fail:
@@ -14265,9 +14266,35 @@ check_and_reapply_connection(NMDevice *self,
nm_device_link_properties_set(self, TRUE);
- if (priv->state >= NM_DEVICE_STATE_CONFIG)
+ if (priv->state >= NM_DEVICE_STATE_CONFIG) {
+ GHashTable *sriov_diff;
+
lldp_setup(self, NM_TERNARY_DEFAULT);
+ sriov_diff = nm_g_hash_table_lookup(diffs, NM_SETTING_SRIOV_SETTING_NAME);
+
+ if (sriov_diff && nm_g_hash_table_lookup(sriov_diff, NM_SETTING_SRIOV_VFS)) {
+ nm_auto_freev NMPlatformVF **plat_vfs = NULL;
+ NMSettingSriov *s_sriov;
+
+ s_sriov = (NMSettingSriov *) nm_connection_get_setting(applied, NM_TYPE_SETTING_SRIOV);
+
+ if (s_sriov) {
+ gs_free_error GError *local = NULL;
+
+ if (!sriov_gen_platform_vfs(self, s_sriov, &plat_vfs, &local)
+ || !nm_platform_link_set_sriov_vfs(nm_device_get_platform(self),
+ priv->ifindex,
+ (const NMPlatformVF *const *) plat_vfs)) {
+ _LOGE(LOGD_DEVICE,
+ "failed to reapply SRIOV VFs%s%s",
+ local ? ": " : "",
+ local ? local->message : "");
+ }
+ }
+ }
+ }
+
if (priv->state >= NM_DEVICE_STATE_IP_CONFIG) {
/* Allow reapply of MTU */
priv->mtu_source = NM_DEVICE_MTU_SOURCE_NONE;
--
2.50.1

View File

@ -1,33 +0,0 @@
From ec93c9d282dc9e73fc2566554a4114a2c86e79b2 Mon Sep 17 00:00:00 2001
From: Pradyumn Rahar <pradyumn.rahar@oracle.com>
Date: Tue, 9 Sep 2025 15:23:22 +0000
Subject: [PATCH] bond: remove `lacp_active` option from reapply subset
NM_SETTING_BOND_OPTION_LACP_ACTIVE is flagged as BOND_OPTFLAG_IFDOWN in
the kernel and hence should not be in OPTIONS_REAPPLY_SUBSET.
Authored-by: Mohith Kumar Thummaluru <mohith.k.kumar.thummaluru@oracle.com>
Signed-off-by: Mohith Kumar Thummaluru <mohith.k.kumar.thummaluru@oracle.com>
Signed-off-by: Pradyumn Rahar <pradyumn.rahar@oracle.com>
(cherry picked from commit 9c48bae3b2747fb182f74897c8b8251cb820c804)
---
src/core/devices/nm-device-bond.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/core/devices/nm-device-bond.c b/src/core/devices/nm-device-bond.c
index 673d236194..39e68e966b 100644
--- a/src/core/devices/nm-device-bond.c
+++ b/src/core/devices/nm-device-bond.c
@@ -52,8 +52,7 @@
NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE, NM_SETTING_BOND_OPTION_PRIMARY_RESELECT, \
NM_SETTING_BOND_OPTION_RESEND_IGMP, NM_SETTING_BOND_OPTION_USE_CARRIER, \
NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY, NM_SETTING_BOND_OPTION_NUM_GRAT_ARP, \
- NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX, \
- NM_SETTING_BOND_OPTION_LACP_ACTIVE
+ NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX
#define OPTIONS_REAPPLY_FULL \
OPTIONS_REAPPLY_SUBSET, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE, \
--
2.53.0

View File

@ -4,10 +4,10 @@
%global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad)
%global epoch_version 1
%global real_version 1.54.0
%global git_tag_version 1.54.0
%global real_version 1.56.0
%global git_tag_version 1.56.0
%global rpm_version %{real_version}
%global release_version 3
%global release_version 1
%global snapshot %{nil}
%global git_sha %{nil}
%global bcond_default_debug 0
@ -188,9 +188,7 @@ Source9: readme-ifcfg-rh-migrated.txt
# Patch0001: 0001-some.patch
# Bugfixes that are only relevant until next rebase of the package.
Patch1001: 1001-ovs-don-t-remove-unrelated-external-ports-rhel-121106.patch
Patch1002: 1002-support-reapplying-sriov-vfs-rhel-113956.patch
Patch1003: 1003-remove-lacp-active-from-reapply-subset-rhel-154247.patch
# Patch1001: 1001-some.patch
Requires(post): systemd
Requires(post): systemd-udev
@ -901,6 +899,7 @@ fi
%{_libexecdir}/nm-dispatcher
%{_libexecdir}/nm-initrd-generator
%{_libexecdir}/nm-daemon-helper
%{_libexecdir}/nm-libnm-helper
%{_libexecdir}/nm-priv-helper
%dir %{_libdir}/%{name}
%dir %{nmplugindir}
@ -1088,12 +1087,27 @@ fi
%changelog
* Mon Mar 09 2026 Ján Václav <jvaclav@redhat.com> - 1:1.54.0-3
- Fix unexpected lacp_active error in logs (RHEL-154247)
* Fri Feb 13 2026 Vladimír Beneš <vbenes@redhat.com> - 1:1.56.0-1
- Update to 1.56.0
* Wed Oct 15 2025 Íñigo Huguet <ihuguet@redhat.com> - 1:1.54.0-2
- Support reapplying sriov.vfs (RHEL-113956)
- Fix removing unrelated OVS ports (RHEL-121106)
* Mon Dec 15 2025 Íñigo Huguet <ihuguet@redhat.com> - 1:1.55.91-1
- Update to 1.56.0 (rc2)
- Fix CVE-2025-9615 (RHEL-111772)
* Tue Nov 18 2025 Íñigo Huguet <ihuguet@redhat.com> - 1:1.55.90-1
- Update to 1.56.0 (rc1)
- Support setting protocol version of HSR/PRP (RHEL-100764)
- Support interlink for HSR/PRP (RHEL-100768)
- Reject connections if the corresponding feature is disabled or removed (RHEL-93829)
- Improve logging of networking off (RHEL-103925)
- Don't delete unrelated OVS ports (RHEL-120176)
* Tue Sep 16 2025 Vladimír Beneš <vbenes@redhat.com> - 1:1.55.4-1
- Update to 1.55.4 (dev)
- Adding a VF configuration resets and re-configures all other VFs (RHEL-95844)
- Fix connection.autoconnect-ports of OVS ports (RHEL-93876)
- Global DNS config without domains silently ignored from D-Bus (RHEL-109853)
- Add support for a DHCP client-id kernelarg (RHEL-108454)
* Mon Aug 04 2025 Filip Pokryvka <fpokryvk@redhat.com> - 1:1.54.0-1
- Update to 1.54.0

View File

@ -1 +1 @@
SHA512 (NetworkManager-1.54.0.tar.xz) = 78bb405f28918556fa921cf290e16a85a10c8b633d98fa764d1723f8e6af66ae9952b7a1a8576522081eead14b1171e55e766ba4b501e9c42665b179757a7626
SHA512 (NetworkManager-1.56.0.tar.xz) = 79cf27c409bfb5fd00ac0d0c1ffc7e59fa084ef34666eff69ad22792ba6883afc05391acefcfb4041bae604ed5c52276a13582e63f1e01b7ea8d4019ad535dd6