Import of kernel-5.14.0-611.41.1.el9_7
This commit is contained in:
parent
fd14d7a12e
commit
ab7e6c79d0
@ -12,7 +12,7 @@ RHEL_MINOR = 7
|
||||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_RELEASE = 611.38.1
|
||||
RHEL_RELEASE = 611.41.1
|
||||
|
||||
#
|
||||
# ZSTREAM
|
||||
|
||||
@ -54,6 +54,7 @@ static inline bool ers_result_indicates_abort(pci_ers_result_t ers_res)
|
||||
case PCI_ERS_RESULT_CAN_RECOVER:
|
||||
case PCI_ERS_RESULT_RECOVERED:
|
||||
case PCI_ERS_RESULT_NEED_RESET:
|
||||
case PCI_ERS_RESULT_NONE:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
@ -78,10 +79,6 @@ static bool is_driver_supported(struct pci_driver *driver)
|
||||
return false;
|
||||
if (!driver->err_handler->error_detected)
|
||||
return false;
|
||||
if (!driver->err_handler->slot_reset)
|
||||
return false;
|
||||
if (!driver->err_handler->resume)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -118,16 +115,18 @@ static pci_ers_result_t zpci_event_do_error_state_clear(struct pci_dev *pdev,
|
||||
return PCI_ERS_RESULT_NEED_RESET;
|
||||
}
|
||||
|
||||
if (driver->err_handler->mmio_enabled) {
|
||||
if (driver->err_handler->mmio_enabled)
|
||||
ers_res = driver->err_handler->mmio_enabled(pdev);
|
||||
if (ers_result_indicates_abort(ers_res)) {
|
||||
pr_info("%s: Automatic recovery failed after MMIO re-enable\n",
|
||||
pci_name(pdev));
|
||||
return ers_res;
|
||||
} else if (ers_res == PCI_ERS_RESULT_NEED_RESET) {
|
||||
pr_debug("%s: Driver needs reset to recover\n", pci_name(pdev));
|
||||
return ers_res;
|
||||
}
|
||||
else
|
||||
ers_res = PCI_ERS_RESULT_NONE;
|
||||
|
||||
if (ers_result_indicates_abort(ers_res)) {
|
||||
pr_info("%s: Automatic recovery failed after MMIO re-enable\n",
|
||||
pci_name(pdev));
|
||||
return ers_res;
|
||||
} else if (ers_res == PCI_ERS_RESULT_NEED_RESET) {
|
||||
pr_debug("%s: Driver needs reset to recover\n", pci_name(pdev));
|
||||
return ers_res;
|
||||
}
|
||||
|
||||
pr_debug("%s: Unblocking DMA\n", pci_name(pdev));
|
||||
@ -154,7 +153,12 @@ static pci_ers_result_t zpci_event_do_reset(struct pci_dev *pdev,
|
||||
return ers_res;
|
||||
}
|
||||
pdev->error_state = pci_channel_io_normal;
|
||||
ers_res = driver->err_handler->slot_reset(pdev);
|
||||
|
||||
if (driver->err_handler->slot_reset)
|
||||
ers_res = driver->err_handler->slot_reset(pdev);
|
||||
else
|
||||
ers_res = PCI_ERS_RESULT_NONE;
|
||||
|
||||
if (ers_result_indicates_abort(ers_res)) {
|
||||
pr_info("%s: Automatic recovery failed after slot reset\n", pci_name(pdev));
|
||||
return ers_res;
|
||||
@ -218,7 +222,7 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
if (ers_res == PCI_ERS_RESULT_CAN_RECOVER) {
|
||||
if (ers_res != PCI_ERS_RESULT_NEED_RESET) {
|
||||
ers_res = zpci_event_do_error_state_clear(pdev, driver);
|
||||
if (ers_result_indicates_abort(ers_res)) {
|
||||
status_str = "failed (abort on MMIO enable)";
|
||||
@ -229,6 +233,16 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)
|
||||
if (ers_res == PCI_ERS_RESULT_NEED_RESET)
|
||||
ers_res = zpci_event_do_reset(pdev, driver);
|
||||
|
||||
/*
|
||||
* ers_res can be PCI_ERS_RESULT_NONE either because the driver
|
||||
* decided to return it, indicating that it abstains from voting
|
||||
* on how to recover, or because it didn't implement the callback.
|
||||
* Both cases assume, that if there is nothing else causing a
|
||||
* disconnect, we recovered successfully.
|
||||
*/
|
||||
if (ers_res == PCI_ERS_RESULT_NONE)
|
||||
ers_res = PCI_ERS_RESULT_RECOVERED;
|
||||
|
||||
if (ers_res != PCI_ERS_RESULT_RECOVERED) {
|
||||
pr_err("%s: Automatic recovery failed; operator intervention is required\n",
|
||||
pci_name(pdev));
|
||||
|
||||
@ -85,8 +85,6 @@ static u64 efi_pa_va_lookup(efi_guid_t *guid, u64 pa)
|
||||
}
|
||||
}
|
||||
|
||||
pr_warn("Failed to find VA for GUID: %pUL, PA: 0x%llx", guid, pa);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -154,13 +152,37 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end)
|
||||
guid_copy(&th->guid, (guid_t *)handler_info->handler_guid);
|
||||
th->handler_addr =
|
||||
(void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
|
||||
/*
|
||||
* Print a warning message if handler_addr is zero which is not expected to
|
||||
* ever happen.
|
||||
*/
|
||||
if (unlikely(!th->handler_addr))
|
||||
pr_warn("Failed to find VA of handler for GUID: %pUL, PA: 0x%llx",
|
||||
&th->guid, handler_info->handler_address);
|
||||
|
||||
th->static_data_buffer_addr =
|
||||
efi_pa_va_lookup(&th->guid, handler_info->static_data_buffer_address);
|
||||
/*
|
||||
* According to the PRM specification, static_data_buffer_address can be zero,
|
||||
* so avoid printing a warning message in that case. Otherwise, if the
|
||||
* return value of efi_pa_va_lookup() is zero, print the message.
|
||||
*/
|
||||
if (unlikely(!th->static_data_buffer_addr && handler_info->static_data_buffer_address))
|
||||
pr_warn("Failed to find VA of static data buffer for GUID: %pUL, PA: 0x%llx",
|
||||
&th->guid, handler_info->static_data_buffer_address);
|
||||
|
||||
th->acpi_param_buffer_addr =
|
||||
efi_pa_va_lookup(&th->guid, handler_info->acpi_param_buffer_address);
|
||||
|
||||
/*
|
||||
* According to the PRM specification, acpi_param_buffer_address can be zero,
|
||||
* so avoid printing a warning message in that case. Otherwise, if the
|
||||
* return value of efi_pa_va_lookup() is zero, print the message.
|
||||
*/
|
||||
if (unlikely(!th->acpi_param_buffer_addr && handler_info->acpi_param_buffer_address))
|
||||
pr_warn("Failed to find VA of acpi param buffer for GUID: %pUL, PA: 0x%llx",
|
||||
&th->guid, handler_info->acpi_param_buffer_address);
|
||||
|
||||
} while (++cur_handler < tm->handler_count && (handler_info = get_next_handler(handler_info)));
|
||||
|
||||
return 0;
|
||||
|
||||
@ -1539,7 +1539,7 @@ int thc_i2c_subip_regs_save(struct thc_device *dev)
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(i2c_subip_regs); i++) {
|
||||
ret = thc_i2c_subip_pio_read(dev, i2c_subip_regs[i],
|
||||
&read_size, (u32 *)&dev->i2c_subip_regs + i);
|
||||
&read_size, &dev->i2c_subip_regs[i]);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
@ -1562,7 +1562,7 @@ int thc_i2c_subip_regs_restore(struct thc_device *dev)
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(i2c_subip_regs); i++) {
|
||||
ret = thc_i2c_subip_pio_write(dev, i2c_subip_regs[i],
|
||||
write_size, (u32 *)&dev->i2c_subip_regs + i);
|
||||
write_size, &dev->i2c_subip_regs[i]);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2370,7 +2370,7 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
||||
int addr_family;
|
||||
__u8 tos, ttl;
|
||||
int ifindex;
|
||||
int err;
|
||||
int err = 0;
|
||||
u32 flags = vxlan->cfg.flags;
|
||||
bool use_cache;
|
||||
bool udp_sum = false;
|
||||
@ -2465,11 +2465,17 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
||||
|
||||
rcu_read_lock();
|
||||
if (addr_family == AF_INET) {
|
||||
struct vxlan_sock *sock4 = rcu_dereference(vxlan->vn4_sock);
|
||||
struct vxlan_sock *sock4;
|
||||
struct rtable *rt;
|
||||
__be16 df = 0;
|
||||
__be32 saddr;
|
||||
|
||||
sock4 = rcu_dereference(vxlan->vn4_sock);
|
||||
if (unlikely(!sock4)) {
|
||||
reason = SKB_DROP_REASON_DEV_READY;
|
||||
goto tx_error;
|
||||
}
|
||||
|
||||
if (!ifindex)
|
||||
ifindex = sock4->sock->sk->sk_bound_dev_if;
|
||||
|
||||
@ -2540,9 +2546,15 @@ void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
|
||||
src_port, dst_port, xnet, !udp_sum);
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
} else {
|
||||
struct vxlan_sock *sock6 = rcu_dereference(vxlan->vn6_sock);
|
||||
struct vxlan_sock *sock6;
|
||||
struct in6_addr saddr;
|
||||
|
||||
sock6 = rcu_dereference(vxlan->vn6_sock);
|
||||
if (unlikely(!sock6)) {
|
||||
reason = SKB_DROP_REASON_DEV_READY;
|
||||
goto tx_error;
|
||||
}
|
||||
|
||||
if (!ifindex)
|
||||
ifindex = sock6->sock->sk->sk_bound_dev_if;
|
||||
|
||||
|
||||
16
mm/hugetlb.c
16
mm/hugetlb.c
@ -4448,6 +4448,11 @@ static int __init hugepages_setup(char *s)
|
||||
unsigned long tmp;
|
||||
char *p = s;
|
||||
|
||||
if (!hugepages_supported()) {
|
||||
pr_warn("HugeTLB: hugepages unsupported, ignoring hugepages=%s cmdline\n", s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!parsed_valid_hugepagesz) {
|
||||
pr_warn("HugeTLB: hugepages=%s does not follow a valid hugepagesz, ignoring\n", s);
|
||||
parsed_valid_hugepagesz = true;
|
||||
@ -4536,6 +4541,11 @@ static int __init hugepagesz_setup(char *s)
|
||||
unsigned long size;
|
||||
struct hstate *h;
|
||||
|
||||
if (!hugepages_supported()) {
|
||||
pr_warn("HugeTLB: hugepages unsupported, ignoring hugepagesz=%s cmdline\n", s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
parsed_valid_hugepagesz = false;
|
||||
size = (unsigned long)memparse(s, NULL);
|
||||
|
||||
@ -4584,6 +4594,12 @@ static int __init default_hugepagesz_setup(char *s)
|
||||
unsigned long size;
|
||||
int i;
|
||||
|
||||
if (!hugepages_supported()) {
|
||||
pr_warn("HugeTLB: hugepages unsupported, ignoring default_hugepagesz=%s cmdline\n",
|
||||
s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
parsed_valid_hugepagesz = false;
|
||||
if (parsed_default_hugepagesz) {
|
||||
pr_err("HugeTLB: default_hugepagesz previously specified, ignoring %s\n", s);
|
||||
|
||||
@ -1,3 +1,17 @@
|
||||
* Sat Mar 07 2026 CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> [5.14.0-611.41.1.el9_7]
|
||||
- net: vxlan: prevent NULL deref in vxlan_xmit_one (Antoine Tenart) [RHEL-133369]
|
||||
- ACPI: PRM: Reduce unnecessary printing to avoid user confusion (Mark Langsdorf) [RHEL-123057]
|
||||
Resolves: RHEL-123057, RHEL-133369
|
||||
|
||||
* Thu Mar 05 2026 CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> [5.14.0-611.40.1.el9_7]
|
||||
- s390/pci: Allow automatic recovery with minimal driver support (CKI Backport Bot) [RHEL-118881]
|
||||
- mm/hugetlb: ignore hugepage kernel args if hugepages are unsupported (Luiz Capitulino) [RHEL-143846]
|
||||
Resolves: RHEL-118881, RHEL-143846
|
||||
|
||||
* Tue Mar 03 2026 CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> [5.14.0-611.39.1.el9_7]
|
||||
- HID: intel-thc-hid: intel-thc: Fix incorrect pointer arithmetic in I2C regs save (CKI Backport Bot) [RHEL-142232] {CVE-2025-39818}
|
||||
Resolves: RHEL-142232
|
||||
|
||||
* Sat Feb 28 2026 CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> [5.14.0-611.38.1.el9_7]
|
||||
- mlxsw: spectrum_mr: Fix use-after-free when updating multicast route stats (CKI Backport Bot) [RHEL-143194] {CVE-2025-68800}
|
||||
Resolves: RHEL-143194
|
||||
|
||||
Loading…
Reference in New Issue
Block a user