kernel-6.7.11-200

* Wed Mar 27 2024 Augusto Caringi <acaringi@redhat.com> [6.7.11-0]
- Config updates for stable (Justin M. Forbes)
- xfs: fix SEEK_HOLE/DATA for regions with active COW extents (Dave Chinner)
- drm/amd: Flush GFXOFF requests in prepare stage (Mario Limonciello)
- Linux v6.7.11
Resolves:

Signed-off-by: Augusto Caringi <acaringi@redhat.com>
This commit is contained in:
Augusto Caringi 2024-03-27 13:23:42 -03:00
commit ec05818cc1
15 changed files with 92 additions and 219 deletions

View file

@ -1,3 +1,9 @@
"https://gitlab.com/cki-project/kernel-ark/-/commit"/c0412c5250f7bdb2ea61b61f27eada0d8a135692
c0412c5250f7bdb2ea61b61f27eada0d8a135692 xfs: fix SEEK_HOLE/DATA for regions with active COW extents
"https://gitlab.com/cki-project/kernel-ark/-/commit"/fed615a24400369495f10f93cd7f644e7983020a
fed615a24400369495f10f93cd7f644e7983020a drm/amd: Flush GFXOFF requests in prepare stage
"https://gitlab.com/cki-project/kernel-ark/-/commit"/f65fe5e93408aed742291b98358a9873317a59ef
f65fe5e93408aed742291b98358a9873317a59ef Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security

View file

@ -2765,6 +2765,7 @@ CONFIG_GPIO_TPS65086=m
CONFIG_GPIO_TPS65219=m
CONFIG_GPIO_TPS6586X=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
CONFIG_GPIO_WATCHDOG=m

View file

@ -2748,6 +2748,7 @@ CONFIG_GPIO_TPS65086=m
CONFIG_GPIO_TPS65219=m
CONFIG_GPIO_TPS6586X=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
CONFIG_GPIO_WATCHDOG=m

View file

@ -2248,6 +2248,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6937,6 +6938,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -2232,6 +2232,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6912,6 +6913,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -2765,6 +2765,7 @@ CONFIG_GPIO_TPS65086=m
CONFIG_GPIO_TPS65219=m
CONFIG_GPIO_TPS6586X=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
CONFIG_GPIO_WATCHDOG=m

View file

@ -2244,6 +2244,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6933,6 +6934,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -2748,6 +2748,7 @@ CONFIG_GPIO_TPS65086=m
CONFIG_GPIO_TPS65219=m
CONFIG_GPIO_TPS6586X=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
CONFIG_GPIO_WATCHDOG=m

View file

@ -2228,6 +2228,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6908,6 +6909,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -2283,6 +2283,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6986,6 +6987,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -2267,6 +2267,7 @@ CONFIG_GPIO_TEGRA186=y
CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_THUNDERX is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
# CONFIG_GPIO_VX855 is not set
@ -6961,6 +6962,8 @@ CONFIG_TEE=m
CONFIG_TEGRA186_GPC_DMA=m
CONFIG_TEGRA186_TIMER=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=m
CONFIG_TEGRA_ACONNECT=m
CONFIG_TEGRA_BPMP_THERMAL=m
# CONFIG_TEGRA_GMI is not set
CONFIG_TEGRA_HOST1X_FIREWALL=y

View file

@ -1,3 +1,10 @@
* Wed Mar 27 2024 Augusto Caringi <acaringi@redhat.com> [6.7.11-0]
- Config updates for stable (Justin M. Forbes)
- xfs: fix SEEK_HOLE/DATA for regions with active COW extents (Dave Chinner)
- drm/amd: Flush GFXOFF requests in prepare stage (Mario Limonciello)
- Linux v6.7.11
Resolves:
* Mon Mar 18 2024 Augusto Caringi <acaringi@redhat.com> [6.7.10-0]
- redhat/configs: Enable CONFIG_MITIGATION_RFDS (Augusto Caringi)
- Linux v6.7.10

View file

@ -160,18 +160,18 @@ Summary: The Linux kernel
# the --with-release option overrides this setting.)
%define debugbuildsenabled 1
# define buildid .local
%define specrpmversion 6.7.10
%define specversion 6.7.10
%define specrpmversion 6.7.11
%define specversion 6.7.11
%define patchversion 6.7
%define pkgrelease 200
%define kversion 6
%define tarfile_release 6.7.10
%define tarfile_release 6.7.11
# This is needed to do merge window version magic
%define patchlevel 7
# This allows pkg_release to have configurable %%{?dist} tag
%define specrelease 200%{?buildid}%{?dist}
# This defines the kabi tarball version
%define kabiversion 6.7.10
%define kabiversion 6.7.11
# If this variable is set to 1, a bpf selftests build failure will cause a
# fatal kernel package build error
@ -3847,6 +3847,12 @@ fi\
#
#
%changelog
* Wed Mar 27 2024 Augusto Caringi <acaringi@redhat.com> [6.7.11-0]
- Config updates for stable (Justin M. Forbes)
- xfs: fix SEEK_HOLE/DATA for regions with active COW extents (Dave Chinner)
- drm/amd: Flush GFXOFF requests in prepare stage (Mario Limonciello)
- Linux v6.7.11
* Mon Mar 18 2024 Augusto Caringi <acaringi@redhat.com> [6.7.10-0]
- redhat/configs: Enable CONFIG_MITIGATION_RFDS (Augusto Caringi)
- Linux v6.7.10

View file

@ -14,16 +14,17 @@
drivers/firmware/efi/efi.c | 124 +++++++++++----
drivers/firmware/efi/secureboot.c | 38 +++++
drivers/firmware/sysfb.c | 18 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +
drivers/hid/hid-rmi.c | 66 --------
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +++
drivers/input/keyboard/atkbd.c | 3 +-
drivers/input/rmi4/rmi_driver.c | 124 +++++++++------
drivers/iommu/iommu.c | 22 +++
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 4 +
drivers/pci/quirks.c | 24 +++
drivers/platform/x86/thinkpad_acpi.c | 20 ++-
drivers/scsi/sd.c | 10 ++
drivers/usb/core/hub.c | 7 +
fs/xfs/xfs_iomap.c | 4 +-
include/linux/efi.h | 22 ++-
include/linux/lsm_hook_defs.h | 2 +
include/linux/module.h | 1 +
@ -32,7 +33,6 @@
include/linux/security.h | 5 +
kernel/module/main.c | 2 +
kernel/module/signing.c | 9 +-
net/bluetooth/rfcomm/core.c | 2 +-
scripts/mod/modpost.c | 8 +
scripts/tags.sh | 2 +
security/integrity/platform_certs/load_uefi.c | 6 +-
@ -40,9 +40,7 @@
security/lockdown/lockdown.c | 1 +
security/security.c | 12 ++
tools/power/cpupower/Makefile | 2 +-
.../selftests/net/openvswitch/openvswitch.sh | 13 ++
.../testing/selftests/net/openvswitch/ovs-dpctl.py | 71 +++++++--
44 files changed, 771 insertions(+), 195 deletions(-)
42 files changed, 701 insertions(+), 181 deletions(-)
diff --git a/Documentation/admin-guide/laptops/thinkpad-acpi.rst b/Documentation/admin-guide/laptops/thinkpad-acpi.rst
index 98d304010170..7f674a6cfa8a 100644
@ -70,7 +68,7 @@ index 98d304010170..7f674a6cfa8a 100644
0x1020 0x1F unknown
diff --git a/Makefile b/Makefile
index 00c159535dab..c4fed2e416db 100644
index 6e3182cdf016..9cc543a90f97 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
@ -264,10 +262,10 @@ index 1687483ff319..390b67f19181 100644
return ctx.rc;
}
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 02bb2cce423f..4a6287d7a22d 100644
index 35ad5781f0a5..63245639aecf 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1757,6 +1757,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
@@ -1753,6 +1753,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
if (!acpi_match_device_ids(device, ignore_serial_bus_ids))
return false;
@ -610,6 +608,19 @@ index 3c197db42c9d..16e4a2e90fae 100644
pd = sysfb_create_simplefb(si, &mode);
if (!IS_ERR(pd))
goto unlock_mutex;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 7f48c7ec4136..c8ce83be5376 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4451,6 +4451,8 @@ int amdgpu_device_prepare(struct drm_device *dev)
if (r)
goto unprepare;
+ flush_delayed_work(&adev->gfx.gfx_off_delay_work);
+
for (i = 0; i < adev->num_ip_blocks; i++) {
if (!adev->ip_blocks[i].status.valid)
continue;
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
index d4af17fdba46..154f0403cbf4 100644
--- a/drivers/hid/hid-rmi.c
@ -713,7 +724,7 @@ index d4af17fdba46..154f0403cbf4 100644
data->xport.ops = &hid_rmi_ops;
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index 34aee59dd147..7c5a7f7c11bd 100644
index 18c4544f6045..4c37cdc40426 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -10,6 +10,7 @@
@ -1016,23 +1027,8 @@ index 33e2a9b5d339..6ae1abc3f11c 100644
/**
* iommu_setup_default_domain - Set the default_domain for the group
* @group: Group to change
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index 6b6aa3c36744..0ce08e9a0a3d 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -851,6 +851,10 @@ ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev(struct ath10k *ar, struct sk_buff *skb,
}
ev = tb[WMI_TLV_TAG_STRUCT_MGMT_TX_COMPL_EVENT];
+ if (!ev) {
+ kfree(tb);
+ return -EPROTO;
+ }
arg->desc_id = ev->desc_id;
arg->status = ev->status;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index a2bf6de11462..692a9e777d72 100644
index 528044237bf9..c50375d40fa0 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4426,6 +4426,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000,
@ -1157,6 +1153,28 @@ index 4854d883e601..e1ee781ca985 100644
/* Lock the device, then check to see if we were
* disconnected while waiting for the lock to succeed. */
usb_lock_device(hdev);
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 18c8f168b153..055cdec2e9ad 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -1323,7 +1323,7 @@ xfs_seek_iomap_begin(
if (cow_fsb != NULLFILEOFF && cow_fsb <= offset_fsb) {
if (data_fsb < cow_fsb + cmap.br_blockcount)
end_fsb = min(end_fsb, data_fsb);
- xfs_trim_extent(&cmap, offset_fsb, end_fsb);
+ xfs_trim_extent(&cmap, offset_fsb, end_fsb - offset_fsb);
seq = xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED);
error = xfs_bmbt_to_iomap(ip, iomap, &cmap, flags,
IOMAP_F_SHARED, seq);
@@ -1348,7 +1348,7 @@ xfs_seek_iomap_begin(
imap.br_state = XFS_EXT_NORM;
done:
seq = xfs_iomap_inode_sequence(ip, 0);
- xfs_trim_extent(&imap, offset_fsb, end_fsb);
+ xfs_trim_extent(&imap, offset_fsb, end_fsb - offset_fsb);
error = xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0, seq);
out_unlock:
xfs_iunlock(ip, lockmode);
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 9cc5bf32f6f2..7462fb1fc99e 100644
--- a/include/linux/efi.h
@ -1464,7 +1482,7 @@ index 9d3138c6364c..7089843865bf 100644
#if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 98fedfdb8db5..a21921f880e1 100644
index 34d9e718c2c7..1c8b40b19014 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = { \
@ -1506,19 +1524,6 @@ index a2ff4242e623..f0d2be1ee4f1 100644
}
int module_sig_check(struct load_info *info, int flags)
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 053ef8f25fae..1d34d8497033 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1941,7 +1941,7 @@ static struct rfcomm_session *rfcomm_process_rx(struct rfcomm_session *s)
/* Get data directly from socket receive queue without copying it. */
while ((skb = skb_dequeue(&sk->sk_receive_queue))) {
skb_orphan(skb);
- if (!skb_linearize(skb)) {
+ if (!skb_linearize(skb) && sk->sk_state != BT_CLOSED) {
s = rfcomm_recv_frame(s, skb);
if (!s)
break;
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index f7c4d3fe4381..7fd1ef7930c6 100644
--- a/scripts/mod/modpost.c
@ -1661,176 +1666,3 @@ index b53753dee02f..90701fc65aa2 100644
PACKAGE = cpupower
PACKAGE_BUGREPORT = linux-pm@vger.kernel.org
diff --git a/tools/testing/selftests/net/openvswitch/openvswitch.sh b/tools/testing/selftests/net/openvswitch/openvswitch.sh
index f8499d4c87f3..36e40256ab92 100755
--- a/tools/testing/selftests/net/openvswitch/openvswitch.sh
+++ b/tools/testing/selftests/net/openvswitch/openvswitch.sh
@@ -502,7 +502,20 @@ test_netlink_checks () {
wc -l) == 2 ] || \
return 1
+ info "Checking clone depth"
ERR_MSG="Flow actions may not be safe on all matching packets"
+ PRE_TEST=$(dmesg | grep -c "${ERR_MSG}")
+ ovs_add_flow "test_netlink_checks" nv0 \
+ 'in_port(1),eth(),eth_type(0x800),ipv4()' \
+ 'clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(clone(drop)))))))))))))))))' \
+ >/dev/null 2>&1 && return 1
+ POST_TEST=$(dmesg | grep -c "${ERR_MSG}")
+
+ if [ "$PRE_TEST" == "$POST_TEST" ]; then
+ info "failed - clone depth too large"
+ return 1
+ fi
+
PRE_TEST=$(dmesg | grep -c "${ERR_MSG}")
ovs_add_flow "test_netlink_checks" nv0 \
'in_port(1),eth(),eth_type(0x0806),arp()' 'drop(0),2' \
diff --git a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py
index b97e621face9..5e0e539a323d 100644
--- a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py
+++ b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py
@@ -299,7 +299,7 @@ class ovsactions(nla):
("OVS_ACTION_ATTR_PUSH_NSH", "none"),
("OVS_ACTION_ATTR_POP_NSH", "flag"),
("OVS_ACTION_ATTR_METER", "none"),
- ("OVS_ACTION_ATTR_CLONE", "none"),
+ ("OVS_ACTION_ATTR_CLONE", "recursive"),
("OVS_ACTION_ATTR_CHECK_PKT_LEN", "none"),
("OVS_ACTION_ATTR_ADD_MPLS", "none"),
("OVS_ACTION_ATTR_DEC_TTL", "none"),
@@ -465,29 +465,42 @@ class ovsactions(nla):
print_str += "pop_mpls"
else:
datum = self.get_attr(field[0])
- print_str += datum.dpstr(more)
+ if field[0] == "OVS_ACTION_ATTR_CLONE":
+ print_str += "clone("
+ print_str += datum.dpstr(more)
+ print_str += ")"
+ else:
+ print_str += datum.dpstr(more)
return print_str
def parse(self, actstr):
+ totallen = len(actstr)
while len(actstr) != 0:
parsed = False
+ parencount = 0
if actstr.startswith("drop"):
# If no reason is provided, the implicit drop is used (i.e no
# action). If some reason is given, an explicit action is used.
- actstr, reason = parse_extract_field(
- actstr,
- "drop(",
- "([0-9]+)",
- lambda x: int(x, 0),
- False,
- None,
- )
+ reason = None
+ if actstr.startswith("drop("):
+ parencount += 1
+
+ actstr, reason = parse_extract_field(
+ actstr,
+ "drop(",
+ "([0-9]+)",
+ lambda x: int(x, 0),
+ False,
+ None,
+ )
+
if reason is not None:
self["attrs"].append(["OVS_ACTION_ATTR_DROP", reason])
parsed = True
else:
- return
+ actstr = actstr[len("drop"): ]
+ return (totallen - len(actstr))
elif parse_starts_block(actstr, "^(\d+)", False, True):
actstr, output = parse_extract_field(
@@ -504,6 +517,7 @@ class ovsactions(nla):
False,
0,
)
+ parencount += 1
self["attrs"].append(["OVS_ACTION_ATTR_RECIRC", recircid])
parsed = True
@@ -516,12 +530,22 @@ class ovsactions(nla):
for flat_act in parse_flat_map:
if parse_starts_block(actstr, flat_act[0], False):
- actstr += len(flat_act[0])
+ actstr = actstr[len(flat_act[0]):]
self["attrs"].append([flat_act[1]])
actstr = actstr[strspn(actstr, ", ") :]
parsed = True
- if parse_starts_block(actstr, "ct(", False):
+ if parse_starts_block(actstr, "clone(", False):
+ parencount += 1
+ subacts = ovsactions()
+ actstr = actstr[len("clone("):]
+ parsedLen = subacts.parse(actstr)
+ lst = []
+ self["attrs"].append(("OVS_ACTION_ATTR_CLONE", subacts))
+ actstr = actstr[parsedLen:]
+ parsed = True
+ elif parse_starts_block(actstr, "ct(", False):
+ parencount += 1
actstr = actstr[len("ct(") :]
ctact = ovsactions.ctact()
@@ -553,6 +577,7 @@ class ovsactions(nla):
natact = ovsactions.ctact.natattr()
if actstr.startswith("("):
+ parencount += 1
t = None
actstr = actstr[1:]
if actstr.startswith("src"):
@@ -607,15 +632,29 @@ class ovsactions(nla):
actstr = actstr[strspn(actstr, ", ") :]
ctact["attrs"].append(["OVS_CT_ATTR_NAT", natact])
- actstr = actstr[strspn(actstr, ",) ") :]
+ actstr = actstr[strspn(actstr, ", ") :]
self["attrs"].append(["OVS_ACTION_ATTR_CT", ctact])
parsed = True
- actstr = actstr[strspn(actstr, "), ") :]
+ actstr = actstr[strspn(actstr, ", ") :]
+ while parencount > 0:
+ parencount -= 1
+ actstr = actstr[strspn(actstr, " "):]
+ if len(actstr) and actstr[0] != ")":
+ raise ValueError("Action str: '%s' unbalanced" % actstr)
+ actstr = actstr[1:]
+
+ if len(actstr) and actstr[0] == ")":
+ return (totallen - len(actstr))
+
+ actstr = actstr[strspn(actstr, ", ") :]
+
if not parsed:
raise ValueError("Action str: '%s' not supported" % actstr)
+ return (totallen - len(actstr))
+
class ovskey(nla):
nla_flags = NLA_F_NESTED
@@ -2111,6 +2150,8 @@ def main(argv):
ovsflow = OvsFlow()
ndb = NDB()
+ sys.setrecursionlimit(100000)
+
if hasattr(args, "showdp"):
found = False
for iface in ndb.interfaces:

View file

@ -1,5 +1,5 @@
SHA512 (kernel-abi-stablelists-6.5.12.tar.bz2) = 7130ba0d72e398ae63bd0192e5e765885d8b932ff10c22f214821387588c358a21c8460561993baab0e5cd48afbad08db822cc49e5e3ae2d927b328de2072e7a
SHA512 (kernel-kabi-dw-6.5.12.tar.bz2) = 7fc7372de576d1f3602abe70483edf30cf635a6d4175261bb44e1b7d4b413bc045b1e2affc0dbe6bf710a7c10b4a5c26c7fd47d8b8e7fe4bee2a25e2fd80b13a
SHA512 (linux-6.7.10.tar.xz) = 56d43d671aac5ad8093eb3ec827bf7860e08490480527fff3212d57ea83e750c078d622584e155932e49b504b1229bf6b73e9dd5cfb8a2c73c7f58dcf5593b92
SHA512 (kernel-abi-stablelists-6.7.10.tar.xz) = 30932f793c44fdfeb1f9c95669efa2ad44456641e34dd9b6f69a050adec8ad21e7ba4c0038b12d57ae1c851e29c9969de2ad780fe61cd6c774076099d2ab099b
SHA512 (kernel-kabi-dw-6.7.10.tar.xz) = ae7b7b23736e1fa715e9336320efe2faf6c6c01fd538c64e2db45db422df90d0014c8c1fe0698c9d65db4db30613c8b7553fd2834060339d1669c48d36748e62
SHA512 (linux-6.7.11.tar.xz) = 6f7e546ed408ac3ac8ffe5f06821f1ebf17182c64ea16d2d9703d53647d7cd746e0b9aa1d8d40cc50a84792462b24796b1f4f088c0f909ff4e459aea0f68d187
SHA512 (kernel-abi-stablelists-6.7.11.tar.xz) = 4af79bdcbdcb1deeb79c7892c3a091b33a95114939514e1e8b273c93b4e21267b4af64a3405693835285da5f3ecd128eed1ccf327808e8e7b711e01c58e96ef1
SHA512 (kernel-kabi-dw-6.7.11.tar.xz) = 87bf25c863f5962ed054da8c297c1dcadd90401f60d1b78dea3406c7c367a7cd88f42d87847acc864dff7917dfbcaa1ab6518131686e563811e08bc51550fcf7