diff options
Diffstat (limited to 'SOURCES/patch-6.7-redhat.patch')
-rw-r--r-- | SOURCES/patch-6.7-redhat.patch | 256 |
1 files changed, 44 insertions, 212 deletions
diff --git a/SOURCES/patch-6.7-redhat.patch b/SOURCES/patch-6.7-redhat.patch index 1b4f19b..5e62197 100644 --- a/SOURCES/patch-6.7-redhat.patch +++ b/SOURCES/patch-6.7-redhat.patch @@ -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: |