diff --git a/blacklist.conf b/blacklist.conf index fdf0478..8818b6d 100644 --- a/blacklist.conf +++ b/blacklist.conf @@ -1836,3 +1836,11 @@ d17d9227c332b7deca59b35fa9ff08e597666c2a # cosmetic fix 6840a150b9daf35e4d21ab9780d0a03b4ed74a5b # doesn't have 2bcf26528787 ("x86/platform/uv: Setup UV functions for Hubless UV Systems") e81bf9793b1861d74953ef041b4f6c7faecc2dbd # optimization, KABI change, bsc#1185607 fe6bdfc8e1e131720abbe77a2eb990c94c9024cb # not applicable, refactoring bsc#1185608 +e183d4e414b64711baf7a04e214b61969ca08dfa # incorrect, reverted by 5369ead83f5aff223b6418c99cb1fe9a8f007363 +17e368d94af77c1533bfd4136e080a33a6330282 # +6d1b867d045699d6ce0dfa0ef35d1b87dd36db56 # All those commits between the marker are fixes for patches +4a98623d5d90175c0f99d185171e60807391e487 # which we backported as part of the fate#322123/bsc#1063068 work +8727906fde6ea665b52e68ddc58833772537f40a # which was the tech-preview enablement of the SME/SEV encryption tech. +74c1f1366eb7714b8b211554f6c5cee315ff3fbc # That fate was for SLE15 and not for SLE12 as for latter the respective +3b1902b87bf11f1c6a84368470dc13da6f3da3bd # feature requests were rejected. So blacklist those fixes here too. +fa13680f5668cff05302a2f4753c49334a83a064 # diff --git a/patches.suse/ACPICA-Enable-sleep-button-on-ACPI-legacy-wake.patch b/patches.suse/ACPICA-Enable-sleep-button-on-ACPI-legacy-wake.patch new file mode 100644 index 0000000..9555f51 --- /dev/null +++ b/patches.suse/ACPICA-Enable-sleep-button-on-ACPI-legacy-wake.patch @@ -0,0 +1,53 @@ +From: Anchal Agarwal +Date: Fri, 14 Feb 2020 10:47:58 -0800 +Subject: ACPICA: Enable sleep button on ACPI legacy wake +Patch-mainline: v5.7-rc1 +Git-commit: a1dc35b840e9e7a91663a288ecb4912b9e4a1406 +References: bsc#1181383 + +ACPICA commit 9383f5b01091e432c05f802a57edc20d329eec1f + +Hibernation (S4) is triggered in a guest when it recieves a sleep +trigger from the hypervisor. When the guest resumes from this power +state, it does not see the sleep_enabled bit. In otherwords, the sleep +button is not enabled on waking from an S4 state. This causes +subsequent invocation of sleep state to fail in the guest. + +Fix this problem by enabling the sleep button in ACPI legacy wake. + +Signed-off-by: Anchal Agarwal +Reviewed-by: Balbir Singh +Reviewed-by: Frank van der Linden +[ ek: changelog] + +Link: https://github.com/acpica/acpica/commit/9383f5b0 +Signed-off-by: Erik Kaneda +Signed-off-by: Anchal Agarwal +Signed-off-by: Bob Moore +Signed-off-by: Rafael J. Wysocki +Acked-by: Lee, Chun-Yi +--- + drivers/acpi/acpica/hwsleep.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/drivers/acpi/acpica/hwsleep.c ++++ b/drivers/acpi/acpica/hwsleep.c +@@ -300,6 +300,18 @@ acpi_status acpi_hw_legacy_wake(u8 sleep + [ACPI_EVENT_POWER_BUTTON]. + status_register_id, ACPI_CLEAR_STATUS); + ++ /* Enable sleep button */ ++ ++ (void) ++ acpi_write_bit_register(acpi_gbl_fixed_event_info ++ [ACPI_EVENT_SLEEP_BUTTON]. ++ enable_register_id, ACPI_ENABLE_EVENT); ++ ++ (void) ++ acpi_write_bit_register(acpi_gbl_fixed_event_info ++ [ACPI_EVENT_SLEEP_BUTTON]. ++ status_register_id, ACPI_CLEAR_STATUS); ++ + acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST, ACPI_SST_WORKING); + return_ACPI_STATUS(status); + } diff --git a/patches.suse/RDMA-hns-Delete-redundant-condition-judgment-related.patch b/patches.suse/RDMA-hns-Delete-redundant-condition-judgment-related.patch new file mode 100644 index 0000000..99277d8 --- /dev/null +++ b/patches.suse/RDMA-hns-Delete-redundant-condition-judgment-related.patch @@ -0,0 +1,60 @@ +From: Yangyang Li +Date: Fri, 2 Apr 2021 17:07:28 +0800 +Subject: RDMA/hns: Delete redundant condition judgment related to eq +Patch-mainline: v5.13-rc1 +Git-commit: 714a597baab099e728307768e3b5c3b82d7b2ce3 +References: bsc#1104427 FATE#326416 + +The register value related to the eq interrupt depends only on +enable_flag, so the redundant condition judgment is deleted. + +Fixes: a5073d6054f7 ("RDMA/hns: Add eq support of hip08") +Link: https://lore.kernel.org/r/1617354454-47840-4-git-send-email-liweihang@huawei.com +Signed-off-by: Yangyang Li +Signed-off-by: Weihang Li +Signed-off-by: Jason Gunthorpe +Acked-by: Thomas Bogendoerfer +--- + drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 27 ++++++--------------------- + 1 file changed, 6 insertions(+), 21 deletions(-) + +--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c ++++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +@@ -5193,31 +5193,16 @@ static irqreturn_t hns_roce_v2_msix_inte + } + + static void hns_roce_v2_int_mask_enable(struct hns_roce_dev *hr_dev, +- int eq_num, int enable_flag) ++ int eq_num, u32 enable_flag) + { + int i; + +- if (enable_flag == EQ_ENABLE) { +- for (i = 0; i < eq_num; i++) +- roce_write(hr_dev, ROCEE_VF_EVENT_INT_EN_REG + +- i * EQ_REG_OFFSET, +- HNS_ROCE_V2_VF_EVENT_INT_EN_M); ++ for (i = 0; i < eq_num; i++) ++ roce_write(hr_dev, ROCEE_VF_EVENT_INT_EN_REG + ++ i * EQ_REG_OFFSET, enable_flag); + +- roce_write(hr_dev, ROCEE_VF_ABN_INT_EN_REG, +- HNS_ROCE_V2_VF_ABN_INT_EN_M); +- roce_write(hr_dev, ROCEE_VF_ABN_INT_CFG_REG, +- HNS_ROCE_V2_VF_ABN_INT_CFG_M); +- } else { +- for (i = 0; i < eq_num; i++) +- roce_write(hr_dev, ROCEE_VF_EVENT_INT_EN_REG + +- i * EQ_REG_OFFSET, +- HNS_ROCE_V2_VF_EVENT_INT_EN_M & 0x0); +- +- roce_write(hr_dev, ROCEE_VF_ABN_INT_EN_REG, +- HNS_ROCE_V2_VF_ABN_INT_EN_M & 0x0); +- roce_write(hr_dev, ROCEE_VF_ABN_INT_CFG_REG, +- HNS_ROCE_V2_VF_ABN_INT_CFG_M & 0x0); +- } ++ roce_write(hr_dev, ROCEE_VF_ABN_INT_EN_REG, enable_flag); ++ roce_write(hr_dev, ROCEE_VF_ABN_INT_CFG_REG, enable_flag); + } + + static void hns_roce_v2_destroy_eqc(struct hns_roce_dev *hr_dev, int eqn) diff --git a/patches.suse/RDMA-srpt-Fix-error-return-code-in-srpt_cm_req_recv.patch b/patches.suse/RDMA-srpt-Fix-error-return-code-in-srpt_cm_req_recv.patch new file mode 100644 index 0000000..d2a1aeb --- /dev/null +++ b/patches.suse/RDMA-srpt-Fix-error-return-code-in-srpt_cm_req_recv.patch @@ -0,0 +1,31 @@ +From: Wang Wensheng +Date: Thu, 8 Apr 2021 11:31:32 +0000 +Subject: RDMA/srpt: Fix error return code in srpt_cm_req_recv() +Patch-mainline: v5.13-rc1 +Git-commit: 6bc950beff0c440ac567cdc4e7f4542a9920953d +References: bsc#1103992 FATE#326009 + +Fix to return a negative error code from the error handling case instead +of 0, as done elsewhere in this function. + +Fixes: db7683d7deb2 ("IB/srpt: Fix login-related race conditions") +Link: https://lore.kernel.org/r/20210408113132.87250-1-wangwensheng4@huawei.com +Reported-by: Hulk Robot +Signed-off-by: Wang Wensheng +Reviewed-by: Bart Van Assche +Signed-off-by: Jason Gunthorpe +Acked-by: Thomas Bogendoerfer +--- + drivers/infiniband/ulp/srpt/ib_srpt.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/infiniband/ulp/srpt/ib_srpt.c ++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c +@@ -2296,6 +2296,7 @@ static int srpt_cm_req_recv(struct srpt_ + pr_info("rejected SRP_LOGIN_REQ because target %s_%d is not enabled\n", + dev_name(&sdev->device->dev), port_num); + mutex_unlock(&sport->mutex); ++ ret = -EINVAL; + goto reject; + } + diff --git a/patches.suse/bnxt_en-fix-ternary-sign-extension-bug-in-bnxt_show_.patch b/patches.suse/bnxt_en-fix-ternary-sign-extension-bug-in-bnxt_show_.patch new file mode 100644 index 0000000..326d587 --- /dev/null +++ b/patches.suse/bnxt_en-fix-ternary-sign-extension-bug-in-bnxt_show_.patch @@ -0,0 +1,36 @@ +From: Dan Carpenter +Date: Thu, 22 Apr 2021 12:10:28 +0300 +Subject: bnxt_en: fix ternary sign extension bug in bnxt_show_temp() +Patch-mainline: v5.13-rc1 +Git-commit: 27537929f30d3136a71ef29db56127a33c92dad7 +References: bsc#1104745 FATE#325918 + +The problem is that bnxt_show_temp() returns long but "rc" is an int +and "len" is a u32. With ternary operations the type promotion is quite +tricky. The negative "rc" is first promoted to u32 and then to long so +it ends up being a high positive value instead of a a negative as we +intended. + +Fix this by removing the ternary. + +Fixes: d69753fa1ecb ("bnxt_en: return proper error codes in bnxt_show_temp") +Signed-off-by: Dan Carpenter +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c ++++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c +@@ -8316,7 +8316,9 @@ static ssize_t bnxt_show_temp(struct dev + if (!rc) + len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */ + mutex_unlock(&bp->hwrm_cmd_lock); +- return rc ?: len; ++ if (rc) ++ return rc; ++ return len; + } + static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0); + diff --git a/patches.suse/cpufreq-intel_pstate-Add-Icelake-servers-support-in-.patch b/patches.suse/cpufreq-intel_pstate-Add-Icelake-servers-support-in-.patch new file mode 100644 index 0000000..4fa9151 --- /dev/null +++ b/patches.suse/cpufreq-intel_pstate-Add-Icelake-servers-support-in-.patch @@ -0,0 +1,31 @@ +From: Giovanni Gherdovich +Date: Tue, 18 May 2021 14:34:12 +0200 +Subject: cpufreq: intel_pstate: Add Icelake servers support in no-HWP mode +Patch-mainline: Submitted https://lore.kernel.org/lkml/20210518123413.20670-1-ggherdovich@suse.cz +References: bsc#1185758 + +Users may disable HWP in firmware, in which case intel_pstate wouldn't load +unless the CPU model is explicitly supported. + +Add ICELAKE_X to the list of CPUs that can register intel_pstate while not +advertising the HWP capability. Without this change, an ICELAKE_X in no-HWP +mode could only use the acpi_cpufreq frequency scaling driver. + +See also commit d8de7a44e11f ("cpufreq: intel_pstate: Add Skylake servers +support"). + +Signed-off-by: Giovanni Gherdovich +--- + drivers/cpufreq/intel_pstate.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/cpufreq/intel_pstate.c ++++ b/drivers/cpufreq/intel_pstate.c +@@ -2166,6 +2166,7 @@ static const struct x86_cpu_id intel_pst + X86_MATCH(ATOM_GOLDMONT, core_funcs), + X86_MATCH(ATOM_GOLDMONT_PLUS, core_funcs), + X86_MATCH(SKYLAKE_X, core_funcs), ++ X86_MATCH(ICELAKE_X, core_funcs), + {} + }; + MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids); diff --git a/patches.suse/cxgb4-Fix-unintentional-sign-extension-issues.patch b/patches.suse/cxgb4-Fix-unintentional-sign-extension-issues.patch new file mode 100644 index 0000000..c160af1 --- /dev/null +++ b/patches.suse/cxgb4-Fix-unintentional-sign-extension-issues.patch @@ -0,0 +1,101 @@ +From: Colin Ian King +Date: Fri, 9 Apr 2021 12:08:57 +0100 +Subject: cxgb4: Fix unintentional sign extension issues +Patch-mainline: v5.13-rc1 +Git-commit: dd2c79677375c37f8f9f8d663eb4708495d595ef +References: bsc#1064802 bsc#1066129 + +The shifting of the u8 integers f->fs.nat_lip[] by 24 bits to +the left will be promoted to a 32 bit signed int and then +sign-extended to a u64. In the event that the top bit of the u8 +is set then all then all the upper 32 bits of the u64 end up as +also being set because of the sign-extension. Fix this by +casting the u8 values to a u64 before the 24 bit left shift. + +Addresses-Coverity: ("Unintended sign extension") +Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters") +Signed-off-by: Colin Ian King +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c ++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +@@ -171,31 +171,31 @@ static void set_nat_params(struct adapte + WORD_MASK, f->fs.nat_lip[15] | + f->fs.nat_lip[14] << 8 | + f->fs.nat_lip[13] << 16 | +- f->fs.nat_lip[12] << 24, 1); ++ (u64)f->fs.nat_lip[12] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 1, + WORD_MASK, f->fs.nat_lip[11] | + f->fs.nat_lip[10] << 8 | + f->fs.nat_lip[9] << 16 | +- f->fs.nat_lip[8] << 24, 1); ++ (u64)f->fs.nat_lip[8] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 2, + WORD_MASK, f->fs.nat_lip[7] | + f->fs.nat_lip[6] << 8 | + f->fs.nat_lip[5] << 16 | +- f->fs.nat_lip[4] << 24, 1); ++ (u64)f->fs.nat_lip[4] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 3, + WORD_MASK, f->fs.nat_lip[3] | + f->fs.nat_lip[2] << 8 | + f->fs.nat_lip[1] << 16 | +- f->fs.nat_lip[0] << 24, 1); ++ (u64)f->fs.nat_lip[0] << 24, 1); + } else { + set_tcb_field(adap, f, tid, TCB_RX_FRAG3_LEN_RAW_W, + WORD_MASK, f->fs.nat_lip[3] | + f->fs.nat_lip[2] << 8 | + f->fs.nat_lip[1] << 16 | +- f->fs.nat_lip[0] << 24, 1); ++ (u64)f->fs.nat_lip[0] << 25, 1); + } + } + +@@ -205,25 +205,25 @@ static void set_nat_params(struct adapte + WORD_MASK, f->fs.nat_fip[15] | + f->fs.nat_fip[14] << 8 | + f->fs.nat_fip[13] << 16 | +- f->fs.nat_fip[12] << 24, 1); ++ (u64)f->fs.nat_fip[12] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 1, + WORD_MASK, f->fs.nat_fip[11] | + f->fs.nat_fip[10] << 8 | + f->fs.nat_fip[9] << 16 | +- f->fs.nat_fip[8] << 24, 1); ++ (u64)f->fs.nat_fip[8] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 2, + WORD_MASK, f->fs.nat_fip[7] | + f->fs.nat_fip[6] << 8 | + f->fs.nat_fip[5] << 16 | +- f->fs.nat_fip[4] << 24, 1); ++ (u64)f->fs.nat_fip[4] << 24, 1); + + set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 3, + WORD_MASK, f->fs.nat_fip[3] | + f->fs.nat_fip[2] << 8 | + f->fs.nat_fip[1] << 16 | +- f->fs.nat_fip[0] << 24, 1); ++ (u64)f->fs.nat_fip[0] << 24, 1); + + } else { + set_tcb_field(adap, f, tid, +@@ -231,7 +231,7 @@ static void set_nat_params(struct adapte + WORD_MASK, f->fs.nat_fip[3] | + f->fs.nat_fip[2] << 8 | + f->fs.nat_fip[1] << 16 | +- f->fs.nat_fip[0] << 24, 1); ++ (u64)f->fs.nat_fip[0] << 24, 1); + } + } + diff --git a/patches.suse/drivers-net-fix-memory-leak-in-atusb_probe.patch b/patches.suse/drivers-net-fix-memory-leak-in-atusb_probe.patch new file mode 100644 index 0000000..5be0884 --- /dev/null +++ b/patches.suse/drivers-net-fix-memory-leak-in-atusb_probe.patch @@ -0,0 +1,36 @@ +From: Pavel Skripkin +Date: Thu, 1 Apr 2021 07:46:24 +0300 +Subject: drivers: net: fix memory leak in atusb_probe +Patch-mainline: v5.12-rc7 +Git-commit: 6b9fbe16955152626557ec6f439f3407b7769941 +References: git-fixes + +syzbot reported memory leak in atusb_probe()[1]. +The problem was in atusb_alloc_urbs(). +Since urb is anchored, we need to release the reference +to correctly free the urb + +backtrace: + [] kmalloc include/linux/slab.h:559 [inline] + [] usb_alloc_urb+0x66/0xe0 drivers/usb/core/urb.c:74 + [] atusb_alloc_urbs drivers/net/ieee802154/atusb.c:362 [inline][2] + [] atusb_probe+0x158/0x820 drivers/net/ieee802154/atusb.c:1038 [1] + +Reported-by: syzbot+28a246747e0a465127f3@syzkaller.appspotmail.com +Signed-off-by: Pavel Skripkin +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ieee802154/atusb.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ieee802154/atusb.c ++++ b/drivers/net/ieee802154/atusb.c +@@ -346,6 +346,7 @@ static int atusb_alloc_urbs(struct atusb + return -ENOMEM; + } + usb_anchor_urb(urb, &atusb->idle_urbs); ++ usb_free_urb(urb); + n--; + } + return 0; diff --git a/patches.suse/drivers-net-fix-memory-leak-in-peak_usb_create_dev.patch b/patches.suse/drivers-net-fix-memory-leak-in-peak_usb_create_dev.patch new file mode 100644 index 0000000..3d0cc7f --- /dev/null +++ b/patches.suse/drivers-net-fix-memory-leak-in-peak_usb_create_dev.patch @@ -0,0 +1,50 @@ +From: Pavel Skripkin +Date: Thu, 1 Apr 2021 16:27:52 +0300 +Subject: drivers: net: fix memory leak in peak_usb_create_dev +Patch-mainline: v5.12-rc7 +Git-commit: a0b96b4a62745397aee662670cfc2157bac03f55 +References: git-fixes + +syzbot reported memory leak in peak_usb. +The problem was in case of failure after calling +->dev_init()[2] in peak_usb_create_dev()[1]. The data +allocated int dev_init() wasn't freed, so simple +->dev_free() call fix this problem. + +backtrace: + [<0000000079d6542a>] kmalloc include/linux/slab.h:552 [inline] + [<0000000079d6542a>] kzalloc include/linux/slab.h:682 [inline] + [<0000000079d6542a>] pcan_usb_fd_init+0x156/0x210 drivers/net/can/usb/peak_usb/pcan_usb_fd.c:868 [2] + [<00000000c09f9057>] peak_usb_create_dev drivers/net/can/usb/peak_usb/pcan_usb_core.c:851 [inline] [1] + [<00000000c09f9057>] peak_usb_probe+0x389/0x490 drivers/net/can/usb/peak_usb/pcan_usb_core.c:949 + +Reported-by: syzbot+91adee8d9ebb9193d22d@syzkaller.appspotmail.com +Signed-off-by: Pavel Skripkin +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/can/usb/peak_usb/pcan_usb_core.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c ++++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c +@@ -882,7 +882,7 @@ static int peak_usb_create_dev(const str + if (dev->adapter->dev_set_bus) { + err = dev->adapter->dev_set_bus(dev, 0); + if (err) +- goto lbl_unregister_candev; ++ goto adap_dev_free; + } + + /* get device number early */ +@@ -894,6 +894,10 @@ static int peak_usb_create_dev(const str + + return 0; + ++adap_dev_free: ++ if (dev->adapter->dev_free) ++ dev->adapter->dev_free(dev); ++ + lbl_unregister_candev: + unregister_candev(netdev); + diff --git a/patches.suse/e1000e-Fix-duplicate-include-guard.patch b/patches.suse/e1000e-Fix-duplicate-include-guard.patch new file mode 100644 index 0000000..9d56579 --- /dev/null +++ b/patches.suse/e1000e-Fix-duplicate-include-guard.patch @@ -0,0 +1,42 @@ +From: Tom Seewald +Date: Sun, 21 Feb 2021 22:00:04 -0600 +Subject: e1000e: Fix duplicate include guard +Patch-mainline: v5.12-rc5 +Git-commit: 896ea5dab25ef12f7d0988b8f0b053a287faf889 +References: git-fixes + +The include guard "_E1000_HW_H_" is used by header files in three +different drivers (e1000/e1000_hw.h, e1000e/hw.h, and igb/e1000_hw.h). +Using the same include guard macro in more than one header file may +cause unexpected behavior from the compiler. Fix the duplicate include +guard in the e1000e driver by renaming it. + +Fixes: bc7f75fa9788 ("[E1000E]: New pci-express e1000 driver (currently for ICH9 devices only)") +Signed-off-by: Tom Seewald +Tested-by: Dvora Fuxbrumer +Acked-by: Sasha Neftin +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/e1000e/hw.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/net/ethernet/intel/e1000e/hw.h ++++ b/drivers/net/ethernet/intel/e1000e/hw.h +@@ -19,8 +19,8 @@ + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + */ + +-#ifndef _E1000_HW_H_ +-#define _E1000_HW_H_ ++#ifndef _E1000E_HW_H_ ++#define _E1000E_HW_H_ + + #include "regs.h" + #include "defines.h" +@@ -721,4 +721,4 @@ struct e1000_hw { + #include "80003es2lan.h" + #include "ich8lan.h" + +-#endif ++#endif /* _E1000E_HW_H_ */ diff --git a/patches.suse/e1000e-Fix-error-handling-in-e1000_set_d0_lplu_state.patch b/patches.suse/e1000e-Fix-error-handling-in-e1000_set_d0_lplu_state.patch new file mode 100644 index 0000000..bb73e5e --- /dev/null +++ b/patches.suse/e1000e-Fix-error-handling-in-e1000_set_d0_lplu_state.patch @@ -0,0 +1,33 @@ +From: Dinghao Liu +Date: Sun, 28 Feb 2021 17:44:23 +0800 +Subject: e1000e: Fix error handling in e1000_set_d0_lplu_state_82571 +Patch-mainline: v5.12-rc5 +Git-commit: b52912b8293f2c496f42583e65599aee606a0c18 +References: git-fixes + +There is one e1e_wphy() call in e1000_set_d0_lplu_state_82571 +that we have caught its return value but lack further handling. +Check and terminate the execution flow just like other e1e_wphy() +in this function. + +Fixes: bc7f75fa9788 ("[E1000E]: New pci-express e1000 driver (currently for ICH9 devices only)") +Signed-off-by: Dinghao Liu +Acked-by: Sasha Neftin +Tested-by: Dvora Fuxbrumer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/e1000e/82571.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/ethernet/intel/e1000e/82571.c ++++ b/drivers/net/ethernet/intel/e1000e/82571.c +@@ -917,6 +917,8 @@ static s32 e1000_set_d0_lplu_state_82571 + } else { + data &= ~IGP02E1000_PM_D0_LPLU; + ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data); ++ if (ret_val) ++ return ret_val; + /* LPLU and SmartSpeed are mutually exclusive. LPLU is used + * during Dx states where the power conservation is most + * important. During driver activity we should enable diff --git a/patches.suse/e1000e-add-rtnl_lock-to-e1000_reset_task.patch b/patches.suse/e1000e-add-rtnl_lock-to-e1000_reset_task.patch new file mode 100644 index 0000000..ecfd568 --- /dev/null +++ b/patches.suse/e1000e-add-rtnl_lock-to-e1000_reset_task.patch @@ -0,0 +1,47 @@ +From: Vitaly Lifshits +Date: Wed, 21 Oct 2020 14:59:37 +0300 +Subject: e1000e: add rtnl_lock() to e1000_reset_task +Patch-mainline: v5.12-rc5 +Git-commit: 21f857f0321d0d0ea9b1a758bd55dc63d1cb2437 +References: git-fixes + +A possible race condition was found in e1000_reset_task, +after discovering a similar issue in igb driver via +commit 024a8168b749 ("igb: reinit_locked() should be called +with rtnl_lock"). + +Added rtnl_lock() and rtnl_unlock() to avoid this. + +Fixes: bc7f75fa9788 ("[E1000E]: New pci-express e1000 driver (currently for ICH9 devices only)") +Suggested-by: Jakub Kicinski +Signed-off-by: Vitaly Lifshits +Tested-by: Dvora Fuxbrumer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/e1000e/netdev.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/intel/e1000e/netdev.c ++++ b/drivers/net/ethernet/intel/e1000e/netdev.c +@@ -5944,15 +5944,19 @@ static void e1000_reset_task(struct work + struct e1000_adapter *adapter; + adapter = container_of(work, struct e1000_adapter, reset_task); + ++ rtnl_lock(); + /* don't run the task if already down */ +- if (test_bit(__E1000_DOWN, &adapter->state)) ++ if (test_bit(__E1000_DOWN, &adapter->state)) { ++ rtnl_unlock(); + return; ++ } + + if (!(adapter->flags & FLAG_RESTART_NOW)) { + e1000e_dump(adapter); + e_err("Reset adapter unexpectedly\n"); + } + e1000e_reinit_locked(adapter); ++ rtnl_unlock(); + } + + /** diff --git a/patches.suse/ethernet-enic-Fix-a-use-after-free-bug-in-enic_hard_.patch b/patches.suse/ethernet-enic-Fix-a-use-after-free-bug-in-enic_hard_.patch new file mode 100644 index 0000000..303acad --- /dev/null +++ b/patches.suse/ethernet-enic-Fix-a-use-after-free-bug-in-enic_hard_.patch @@ -0,0 +1,62 @@ +From: Lv Yunlong +Date: Sun, 2 May 2021 04:58:18 -0700 +Subject: ethernet:enic: Fix a use after free bug in enic_hard_start_xmit +Patch-mainline: v5.13-rc1 +Git-commit: 643001b47adc844ae33510c4bb93c236667008a3 +References: bsc#1113431 + +In enic_hard_start_xmit, it calls enic_queue_wq_skb(). Inside +enic_queue_wq_skb, if some error happens, the skb will be freed +by dev_kfree_skb(skb). But the freed skb is still used in +skb_tx_timestamp(skb). + +My patch makes enic_queue_wq_skb() return error and goto spin_unlock() +incase of error. The solution is provided by Govind. +See https://lkml.org/lkml/2021/4/30/961. + +Fixes: fb7516d42478e ("enic: add sw timestamp support") +Signed-off-by: Lv Yunlong +Acked-by: Govindarajulu Varadarajan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/cisco/enic/enic_main.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/cisco/enic/enic_main.c ++++ b/drivers/net/ethernet/cisco/enic/enic_main.c +@@ -803,7 +803,7 @@ static inline int enic_queue_wq_skb_enca + return err; + } + +-static inline void enic_queue_wq_skb(struct enic *enic, ++static inline int enic_queue_wq_skb(struct enic *enic, + struct vnic_wq *wq, struct sk_buff *skb) + { + unsigned int mss = skb_shinfo(skb)->gso_size; +@@ -849,6 +849,7 @@ static inline void enic_queue_wq_skb(str + wq->to_use = buf->next; + dev_kfree_skb(skb); + } ++ return err; + } + + /* netif_tx_lock held, process context with BHs disabled, or BH */ +@@ -892,7 +893,8 @@ static netdev_tx_t enic_hard_start_xmit( + return NETDEV_TX_BUSY; + } + +- enic_queue_wq_skb(enic, wq, skb); ++ if (enic_queue_wq_skb(enic, wq, skb)) ++ goto error; + + if (vnic_wq_desc_avail(wq) < MAX_SKB_FRAGS + ENIC_DESC_MAX_SPLITS) + netif_tx_stop_queue(txq); +@@ -900,6 +902,7 @@ static netdev_tx_t enic_hard_start_xmit( + if (!skb->xmit_more || netif_xmit_stopped(txq)) + vnic_wq_doorbell(wq); + ++error: + spin_unlock(&enic->wq_lock[txq_map]); + + return NETDEV_TX_OK; diff --git a/patches.suse/i40e-Added-Asym_Pause-to-supported-link-modes.patch b/patches.suse/i40e-Added-Asym_Pause-to-supported-link-modes.patch new file mode 100644 index 0000000..8637c61 --- /dev/null +++ b/patches.suse/i40e-Added-Asym_Pause-to-supported-link-modes.patch @@ -0,0 +1,34 @@ +From: Mateusz Palczewski +Date: Mon, 4 Jan 2021 15:00:02 +0000 +Subject: i40e: Added Asym_Pause to supported link modes +Patch-mainline: v5.12-rc7 +Git-commit: 90449e98c265296329446c7abcd2aae3b20c0bc9 +References: git-fixes + +Add Asym_Pause to supported link modes (it is supported by HW). +Lack of Asym_Pause in supported modes can cause several problems, +i.e. it won't be possible to turn the autonegotiation on +with asymmetric pause settings (i.e. Tx on, Rx off). + +Fixes: 4e91bcd5d47a ("i40e: Finish implementation of ethtool get settings") +Signed-off-by: Dawid Lukwinski +Signed-off-by: Mateusz Palczewski +Reviewed-by: Aleksandr Loktionov +Reviewed-by: Przemyslaw Patynowski +Tested-by: Tony Brelinski +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +@@ -1113,6 +1113,7 @@ static int i40e_get_link_ksettings(struc + + /* Set flow control settings */ + ethtool_link_ksettings_add_link_mode(ks, supported, Pause); ++ ethtool_link_ksettings_add_link_mode(ks, supported, Asym_Pause); + + switch (hw->fc.requested_mode) { + case I40E_FC_FULL: diff --git a/patches.suse/i40e-Fix-PHY-type-identifiers-for-2.5G-and-5G-adapte.patch b/patches.suse/i40e-Fix-PHY-type-identifiers-for-2.5G-and-5G-adapte.patch new file mode 100644 index 0000000..549e22f --- /dev/null +++ b/patches.suse/i40e-Fix-PHY-type-identifiers-for-2.5G-and-5G-adapte.patch @@ -0,0 +1,83 @@ +From: Mateusz Palczewski +Date: Tue, 13 Apr 2021 14:43:07 +0000 +Subject: i40e: Fix PHY type identifiers for 2.5G and 5G adapters +Patch-mainline: v5.13-rc1 +Git-commit: 15395ec4685bd45a43d1b54b8fd9846b87e2c621 +References: jsc#SLE-4797 + +Unlike other supported adapters, 2.5G and 5G use different +PHY type identifiers for reading/writing PHY settings +and for reading link status. This commit introduces +separate PHY identifiers for these two operation types. + +Fixes: 2e45d3f4677a ("i40e: Add support for X710 B/P & SFP+ cards") +Signed-off-by: Dawid Lukwinski +Signed-off-by: Mateusz Palczewski +Reviewed-by: Aleksandr Loktionov +Tested-by: Dave Switzer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 6 ++++-- + drivers/net/ethernet/intel/i40e/i40e_common.c | 4 ++-- + drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 4 ++-- + drivers/net/ethernet/intel/i40e/i40e_type.h | 7 ++----- + 4 files changed, 10 insertions(+), 11 deletions(-) + +--- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h ++++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +@@ -1911,8 +1911,10 @@ enum i40e_aq_phy_type { + I40E_PHY_TYPE_25GBASE_LR = 0x22, + I40E_PHY_TYPE_25GBASE_AOC = 0x23, + I40E_PHY_TYPE_25GBASE_ACC = 0x24, +- I40E_PHY_TYPE_2_5GBASE_T = 0x30, +- I40E_PHY_TYPE_5GBASE_T = 0x31, ++ I40E_PHY_TYPE_2_5GBASE_T = 0x26, ++ I40E_PHY_TYPE_5GBASE_T = 0x27, ++ I40E_PHY_TYPE_2_5GBASE_T_LINK_STATUS = 0x30, ++ I40E_PHY_TYPE_5GBASE_T_LINK_STATUS = 0x31, + I40E_PHY_TYPE_MAX, + I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP = 0xFD, + I40E_PHY_TYPE_EMPTY = 0xFE, +--- a/drivers/net/ethernet/intel/i40e/i40e_common.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_common.c +@@ -1177,8 +1177,8 @@ static enum i40e_media_type i40e_get_med + break; + case I40E_PHY_TYPE_100BASE_TX: + case I40E_PHY_TYPE_1000BASE_T: +- case I40E_PHY_TYPE_2_5GBASE_T: +- case I40E_PHY_TYPE_5GBASE_T: ++ case I40E_PHY_TYPE_2_5GBASE_T_LINK_STATUS: ++ case I40E_PHY_TYPE_5GBASE_T_LINK_STATUS: + case I40E_PHY_TYPE_10GBASE_T: + media = I40E_MEDIA_TYPE_BASET; + break; +--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +@@ -838,8 +838,8 @@ static void i40e_get_settings_link_up(st + 10000baseT_Full); + break; + case I40E_PHY_TYPE_10GBASE_T: +- case I40E_PHY_TYPE_5GBASE_T: +- case I40E_PHY_TYPE_2_5GBASE_T: ++ case I40E_PHY_TYPE_5GBASE_T_LINK_STATUS: ++ case I40E_PHY_TYPE_2_5GBASE_T_LINK_STATUS: + case I40E_PHY_TYPE_1000BASE_T: + case I40E_PHY_TYPE_100BASE_TX: + ethtool_link_ksettings_add_link_mode(ks, supported, Autoneg); +--- a/drivers/net/ethernet/intel/i40e/i40e_type.h ++++ b/drivers/net/ethernet/intel/i40e/i40e_type.h +@@ -276,11 +276,8 @@ struct i40e_phy_info { + #define I40E_CAP_PHY_TYPE_25GBASE_ACC BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC + \ + I40E_PHY_TYPE_OFFSET) + /* Offset for 2.5G/5G PHY Types value to bit number conversion */ +-#define I40E_PHY_TYPE_OFFSET2 (-10) +-#define I40E_CAP_PHY_TYPE_2_5GBASE_T BIT_ULL(I40E_PHY_TYPE_2_5GBASE_T + \ +- I40E_PHY_TYPE_OFFSET2) +-#define I40E_CAP_PHY_TYPE_5GBASE_T BIT_ULL(I40E_PHY_TYPE_5GBASE_T + \ +- I40E_PHY_TYPE_OFFSET2) ++#define I40E_CAP_PHY_TYPE_2_5GBASE_T BIT_ULL(I40E_PHY_TYPE_2_5GBASE_T) ++#define I40E_CAP_PHY_TYPE_5GBASE_T BIT_ULL(I40E_PHY_TYPE_5GBASE_T) + #define I40E_HW_CAP_MAX_GPIO 30 + /* Capabilities of a PF or a VF or the whole device */ + struct i40e_hw_capabilities { diff --git a/patches.suse/i40e-Fix-sparse-errors-in-i40e_txrx.c.patch b/patches.suse/i40e-Fix-sparse-errors-in-i40e_txrx.c.patch new file mode 100644 index 0000000..928c60d --- /dev/null +++ b/patches.suse/i40e-Fix-sparse-errors-in-i40e_txrx.c.patch @@ -0,0 +1,74 @@ +From: Arkadiusz Kubalewski +Date: Fri, 26 Mar 2021 19:43:40 +0100 +Subject: i40e: Fix sparse errors in i40e_txrx.c +Patch-mainline: v5.12-rc7 +Git-commit: 12738ac4754ec92a6a45bf3677d8da780a1412b3 +References: git-fixes + +Remove error handling through pointers. Instead use plain int +to return value from i40e_run_xdp(...). + +Previously: +- sparse errors were produced during compilation: +i40e_txrx.c:2338 i40e_run_xdp() error: (-2147483647) too low for ERR_PTR +i40e_txrx.c:2558 i40e_clean_rx_irq() error: 'skb' dereferencing possible ERR_PTR() + +- sk_buff* was used to return value, but it has never had valid +pointer to sk_buff. Returned value was always int handled as +a pointer. + +Fixes: 0c8493d90b6b ("i40e: add XDP support for pass and drop actions") +Fixes: 2e6893123830 ("i40e: split XDP_TX tail and XDP_REDIRECT map flushing") +Signed-off-by: Aleksandr Loktionov +Signed-off-by: Arkadiusz Kubalewski +Tested-by: Dave Switzer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_txrx.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c +@@ -2227,8 +2227,7 @@ int i40e_xmit_xdp_tx_ring(struct xdp_buf + * @rx_ring: Rx ring being processed + * @xdp: XDP buffer containing the frame + **/ +-static struct sk_buff *i40e_run_xdp(struct i40e_ring *rx_ring, +- struct xdp_buff *xdp) ++static int i40e_run_xdp(struct i40e_ring *rx_ring, struct xdp_buff *xdp) + { + int err, result = I40E_XDP_PASS; + struct i40e_ring *xdp_ring; +@@ -2267,7 +2266,7 @@ static struct sk_buff *i40e_run_xdp(stru + } + xdp_out: + rcu_read_unlock(); +- return ERR_PTR(-result); ++ return result; + } + + /** +@@ -2368,6 +2367,7 @@ static int i40e_clean_rx_irq(struct i40e + unsigned int xdp_xmit = 0; + bool failure = false; + struct xdp_buff xdp; ++ int xdp_res = 0; + + xdp.rxq = &rx_ring->xdp_rxq; + +@@ -2425,12 +2425,10 @@ static int i40e_clean_rx_irq(struct i40e + i40e_rx_offset(rx_ring); + xdp.data_end = xdp.data + size; + +- skb = i40e_run_xdp(rx_ring, &xdp); ++ xdp_res = i40e_run_xdp(rx_ring, &xdp); + } + +- if (IS_ERR(skb)) { +- unsigned int xdp_res = -PTR_ERR(skb); +- ++ if (xdp_res) { + if (xdp_res & (I40E_XDP_TX | I40E_XDP_REDIR)) { + xdp_xmit |= xdp_res; + i40e_rx_buffer_flip(rx_ring, rx_buffer, size); diff --git a/patches.suse/i40e-Fix-use-after-free-in-i40e_client_subtask.patch b/patches.suse/i40e-Fix-use-after-free-in-i40e_client_subtask.patch new file mode 100644 index 0000000..4eb4efd --- /dev/null +++ b/patches.suse/i40e-Fix-use-after-free-in-i40e_client_subtask.patch @@ -0,0 +1,30 @@ +From: Yunjian Wang +Date: Mon, 12 Apr 2021 22:41:18 +0800 +Subject: i40e: Fix use-after-free in i40e_client_subtask() +Patch-mainline: v5.13-rc1 +Git-commit: 38318f23a7ef86a8b1862e5e8078c4de121960c3 +References: bsc#1101816 FATE#325147 FATE#325149 + +Currently the call to i40e_client_del_instance frees the object +pf->cinst, however pf->cinst->lan_info is being accessed after +the free. Fix this by adding the missing return. + +Addresses-Coverity: ("Read from pointer after free") +Fixes: 7b0b1a6d0ac9 ("i40e: Disable iWARP VSI PETCP_ENA flag on netdev down events") +Signed-off-by: Yunjian Wang +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_client.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/intel/i40e/i40e_client.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_client.c +@@ -400,6 +400,7 @@ void i40e_client_subtask(struct i40e_pf + clear_bit(__I40E_CLIENT_INSTANCE_OPENED, + &cdev->state); + i40e_client_del_instance(pf); ++ return; + } + } + } diff --git a/patches.suse/i40e-fix-broken-XDP-support.patch b/patches.suse/i40e-fix-broken-XDP-support.patch new file mode 100644 index 0000000..b61de12 --- /dev/null +++ b/patches.suse/i40e-fix-broken-XDP-support.patch @@ -0,0 +1,70 @@ +From: Magnus Karlsson +Date: Mon, 26 Apr 2021 13:14:01 +0200 +Subject: i40e: fix broken XDP support +Patch-mainline: v5.13-rc1 +Git-commit: ae4393dfd472b194c90d75d2123105fb5ed59b04 +References: git-fixes + +Commit 12738ac4754e ("i40e: Fix sparse errors in i40e_txrx.c") broke +XDP support in the i40e driver. That commit was fixing a sparse error +in the code by introducing a new variable xdp_res instead of +overloading this into the skb pointer. The problem is that the code +later uses the skb pointer in if statements and these where not +extended to also test for the new xdp_res variable. Fix this by adding +the correct tests for xdp_res in these places. + +The skb pointer was used to store the result of the XDP program by +overloading the results in the error pointer +ERR_PTR(-result). Therefore, the allocation failure test that used to +only test for !skb now need to be extended to also consider !xdp_res. + +i40e_cleanup_headers() had a check that based on the skb value being +an error pointer, i.e. a result from the XDP program != XDP_PASS, and +if so start to process a new packet immediately, instead of populating +skb fields and sending the skb to the stack. This check is not needed +anymore, since we have added an explicit test for xdp_res being set +and if so just do continue to pick the next packet from the NIC. + +Fixes: 12738ac4754e ("i40e: Fix sparse errors in i40e_txrx.c") +Acked-by: Jesper Dangaard Brouer +Tested-by: Jesper Dangaard Brouer +Reported-by: Jesper Dangaard Brouer +Reviewed-by: Maciej Fijalkowski +Signed-off-by: Magnus Karlsson +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_txrx.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c +@@ -1847,10 +1847,6 @@ static bool i40e_cleanup_headers(struct + union i40e_rx_desc *rx_desc) + + { +- /* XDP packets use error pointer so abort at this point */ +- if (IS_ERR(skb)) +- return true; +- + /* ERR_MASK will only have valid bits if EOP set, and + * what we are doing here is actually checking + * I40E_RX_DESC_ERROR_RXE_SHIFT, since it is the zeroth bit in +@@ -2446,7 +2442,7 @@ static int i40e_clean_rx_irq(struct i40e + } + + /* exit if we failed to retrieve a buffer */ +- if (!skb) { ++ if (!xdp_res && !skb) { + rx_ring->rx_stats.alloc_buff_failed++; + rx_buffer->pagecnt_bias++; + break; +@@ -2458,7 +2454,7 @@ static int i40e_clean_rx_irq(struct i40e + if (i40e_is_non_eop(rx_ring, rx_desc, skb)) + continue; + +- if (i40e_cleanup_headers(rx_ring, skb, rx_desc)) { ++ if (xdp_res || i40e_cleanup_headers(rx_ring, skb, rx_desc)) { + skb = NULL; + continue; + } diff --git a/patches.suse/i40e-fix-the-panic-when-running-bpf-in-xdpdrv-mode.patch b/patches.suse/i40e-fix-the-panic-when-running-bpf-in-xdpdrv-mode.patch new file mode 100644 index 0000000..035a07f --- /dev/null +++ b/patches.suse/i40e-fix-the-panic-when-running-bpf-in-xdpdrv-mode.patch @@ -0,0 +1,66 @@ +From: Jason Xing +Date: Wed, 14 Apr 2021 10:34:28 +0800 +Subject: i40e: fix the panic when running bpf in xdpdrv mode +Patch-mainline: v5.12-rc8 +Git-commit: 4e39a072a6a0fc422ba7da5e4336bdc295d70211 +References: git-fixes + +Fix this panic by adding more rules to calculate the value of @rss_size_max +which could be used in allocating the queues when bpf is loaded, which, +however, could cause the failure and then trigger the NULL pointer of +vsi->rx_rings. Prio to this fix, the machine doesn't care about how many +cpus are online and then allocates 256 queues on the machine with 32 cpus +online actually. + +Once the load of bpf begins, the log will go like this "failed to get +tracking for 256 queues for VSI 0 err -12" and this "setup of MAIN VSI +failed". + +Thus, I attach the key information of the crash-log here. + +BUG: unable to handle kernel NULL pointer dereference at +0000000000000000 +RIP: 0010:i40e_xdp+0xdd/0x1b0 [i40e] +Call Trace: +[2160294.717292] ? i40e_reconfig_rss_queues+0x170/0x170 [i40e] +[2160294.717666] dev_xdp_install+0x4f/0x70 +[2160294.718036] dev_change_xdp_fd+0x11f/0x230 +[2160294.718380] ? dev_disable_lro+0xe0/0xe0 +[2160294.718705] do_setlink+0xac7/0xe70 +[2160294.719035] ? __nla_parse+0xed/0x120 +[2160294.719365] rtnl_newlink+0x73b/0x860 + +Fixes: 41c445ff0f48 ("i40e: main driver core") +Co-developed-by: Shujin Li +Signed-off-by: Shujin Li +Signed-off-by: Jason Xing +Reviewed-by: Jesse Brandeburg +Acked-by: Jesper Dangaard Brouer +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/net/ethernet/intel/i40e/i40e_main.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_main.c +@@ -11413,6 +11413,7 @@ static int i40e_sw_init(struct i40e_pf * + { + int err = 0; + int size; ++ u16 pow; + + /* Set default capability flags */ + pf->flags = I40E_FLAG_RX_CSUM_ENABLED | +@@ -11431,6 +11432,11 @@ static int i40e_sw_init(struct i40e_pf * + pf->rss_table_size = pf->hw.func_caps.rss_table_size; + pf->rss_size_max = min_t(int, pf->rss_size_max, + pf->hw.func_caps.num_tx_qp); ++ ++ /* find the next higher power-of-2 of num cpus */ ++ pow = roundup_pow_of_two(num_online_cpus()); ++ pf->rss_size_max = min_t(int, pf->rss_size_max, pow); ++ + if (pf->hw.func_caps.rss) { + pf->flags |= I40E_FLAG_RSS_ENABLED; + pf->alloc_rss_size = min_t(int, pf->rss_size_max, diff --git a/patches.suse/i40e-fix-the-restart-auto-negotiation-after-FEC-modi.patch b/patches.suse/i40e-fix-the-restart-auto-negotiation-after-FEC-modi.patch new file mode 100644 index 0000000..2a54c28 --- /dev/null +++ b/patches.suse/i40e-fix-the-restart-auto-negotiation-after-FEC-modi.patch @@ -0,0 +1,34 @@ +From: Jaroslaw Gawin +Date: Tue, 13 Apr 2021 14:19:40 +0000 +Subject: i40e: fix the restart auto-negotiation after FEC modified +Patch-mainline: v5.13-rc1 +Git-commit: 61343e6da7810de81d6b826698946ae4f9070819 +References: jsc#SLE-4797 + +When FEC mode was changed the link didn't know it because +the link was not reset and new parameters were not negotiated. +Set a flag 'I40E_AQ_PHY_ENABLE_ATOMIC_LINK' in 'abilities' +to restart the link and make it run with the new settings. + +Fixes: 1d96340196f1 ("i40e: Add support FEC configuration for Fortville 25G") +Signed-off-by: Jaroslaw Gawin +Signed-off-by: Mateusz Palczewski +Tested-by: Dave Switzer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +@@ -1420,7 +1420,8 @@ static int i40e_set_fec_cfg(struct net_d + + memset(&config, 0, sizeof(config)); + config.phy_type = abilities.phy_type; +- config.abilities = abilities.abilities; ++ config.abilities = abilities.abilities | ++ I40E_AQ_PHY_ENABLE_ATOMIC_LINK; + config.phy_type_ext = abilities.phy_type_ext; + config.link_speed = abilities.link_speed; + config.eee_capability = abilities.eee_capability; diff --git a/patches.suse/ibmvnic-remove-default-label-from-to_string-switch.patch b/patches.suse/ibmvnic-remove-default-label-from-to_string-switch.patch new file mode 100644 index 0000000..d90f1d3 --- /dev/null +++ b/patches.suse/ibmvnic-remove-default-label-from-to_string-switch.patch @@ -0,0 +1,59 @@ +From 07b5dc1d515a9a9b3973e0bdc716a78adf6db8f8 Mon Sep 17 00:00:00 2001 +From: Michal Suchanek +Date: Thu, 20 May 2021 08:50:34 +0200 +Subject: [PATCH] ibmvnic: remove default label from to_string switch + +References: bsc#1152457 ltc#174432 git-fixes +Patch-mainline: queued +Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git +Git-commit: 07b5dc1d515a9a9b3973e0bdc716a78adf6db8f8 + +This way the compiler warns when a new value is added to the enum but +not to the string translation like: + +drivers/net/ethernet/ibm/ibmvnic.c: In function 'adapter_state_to_string': +drivers/net/ethernet/ibm/ibmvnic.c:832:2: warning: enumeration value 'VNIC_FOOBAR' not handled in switch [-Wswitch] + switch (state) { + ^~~~~~ +drivers/net/ethernet/ibm/ibmvnic.c: In function 'reset_reason_to_string': +drivers/net/ethernet/ibm/ibmvnic.c:1935:2: warning: enumeration value 'VNIC_RESET_FOOBAR' not handled in switch [-Wswitch] + switch (reason) { + ^~~~~~ + +Signed-off-by: Michal Suchanek +Acked-by: Lijun Pan +Link: https://lore.kernel.org/netdev/CAOhMmr701LecfuNM+EozqbiTxFvDiXjFdY2aYeKJYaXq9kqVDg@mail.gmail.com/ +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/ibm/ibmvnic.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c +index 5788bb956d73..4d439413f6d9 100644 +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -846,9 +846,8 @@ static const char *adapter_state_to_string(enum vnic_state state) + return "REMOVING"; + case VNIC_REMOVED: + return "REMOVED"; +- default: +- return "UNKNOWN"; + } ++ return "UNKNOWN"; + } + + static int ibmvnic_login(struct net_device *netdev) +@@ -1946,9 +1945,8 @@ static const char *reset_reason_to_string(enum ibmvnic_reset_reason reason) + return "TIMEOUT"; + case VNIC_RESET_CHANGE_PARAM: + return "CHANGE_PARAM"; +- default: +- return "UNKNOWN"; + } ++ return "UNKNOWN"; + } + + /* +-- +2.26.2 + diff --git a/patches.suse/igb-Fix-duplicate-include-guard.patch b/patches.suse/igb-Fix-duplicate-include-guard.patch new file mode 100644 index 0000000..2128728 --- /dev/null +++ b/patches.suse/igb-Fix-duplicate-include-guard.patch @@ -0,0 +1,41 @@ +From: Tom Seewald +Date: Sun, 21 Feb 2021 22:00:05 -0600 +Subject: igb: Fix duplicate include guard +Patch-mainline: v5.12-rc5 +Git-commit: a75519a84855bca029ce7d8a27de9409d9b84956 +References: git-fixes + +The include guard "_E1000_HW_H_" is used by two separate header files in +two different drivers (e1000/e1000_hw.h and igb/e1000_hw.h). Using the +same include guard macro in more than one header file may cause +unexpected behavior from the compiler. Fix this by renaming the +duplicate guard in the igb driver. + +Fixes: 9d5c824399de ("igb: PCI-Express 82575 Gigabit Ethernet driver") +Signed-off-by: Tom Seewald +Reviewed-by: Jesse Brandeburg +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/igb/e1000_hw.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/net/ethernet/intel/igb/e1000_hw.h ++++ b/drivers/net/ethernet/intel/igb/e1000_hw.h +@@ -20,8 +20,8 @@ + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + */ + +-#ifndef _E1000_HW_H_ +-#define _E1000_HW_H_ ++#ifndef _E1000_IGB_HW_H_ ++#define _E1000_IGB_HW_H_ + + #include + #include +@@ -570,4 +570,4 @@ s32 igb_write_pcie_cap_reg(struct e1000_ + + void igb_read_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value); + void igb_write_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value); +-#endif /* _E1000_HW_H_ */ ++#endif /* _E1000_IGB_HW_H_ */ diff --git a/patches.suse/igb-check-timestamp-validity.patch b/patches.suse/igb-check-timestamp-validity.patch new file mode 100644 index 0000000..ee2695e --- /dev/null +++ b/patches.suse/igb-check-timestamp-validity.patch @@ -0,0 +1,143 @@ +From: Jesse Brandeburg +Date: Wed, 3 Mar 2021 12:51:03 -0800 +Subject: igb: check timestamp validity +Patch-mainline: v5.12-rc5 +Git-commit: f0a03a026857d6c7766eb7d5835edbf5523ca15c +References: git-fixes + +Add a couple of checks to make sure timestamping is on and that the +timestamp value from DMA is valid. This avoids any functional issues +that could come from a misinterpreted time stamp. + +One of the functions changed doesn't need a return value added because +there was no value in checking from the calling locations. + +While here, fix a couple of reverse christmas tree issues next to +the code being changed. + +Fixes: f56e7bba22fa ("igb: Pull timestamp from fragment before adding it to skb") +Fixes: 9cbc948b5a20 ("igb: add XDP support") +Signed-off-by: Jesse Brandeburg +Tested-by: Dave Switzer +Signed-off-by: Tony Nguyen +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/intel/igb/igb.h | 4 +-- + drivers/net/ethernet/intel/igb/igb_main.c | 11 +++++----- + drivers/net/ethernet/intel/igb/igb_ptp.c | 31 +++++++++++++++++++++++------- + 3 files changed, 32 insertions(+), 14 deletions(-) + +--- a/drivers/net/ethernet/intel/igb/igb.h ++++ b/drivers/net/ethernet/intel/igb/igb.h +@@ -694,8 +694,8 @@ void igb_ptp_suspend(struct igb_adapter + void igb_ptp_rx_hang(struct igb_adapter *adapter); + void igb_ptp_tx_hang(struct igb_adapter *adapter); + void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb); +-void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, +- struct sk_buff *skb); ++int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, ++ struct sk_buff *skb); + int igb_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); + int igb_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); + void igb_set_flag_queue_pairs(struct igb_adapter *, const u32); +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -7976,9 +7976,10 @@ static struct sk_buff *igb_construct_skb + return NULL; + + if (unlikely(igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP))) { +- igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); +- va += IGB_TS_HDR_LEN; +- size -= IGB_TS_HDR_LEN; ++ if (!igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb)) { ++ va += IGB_TS_HDR_LEN; ++ size -= IGB_TS_HDR_LEN; ++ } + } + + /* Determine available headroom for copy */ +@@ -8038,8 +8039,8 @@ static struct sk_buff *igb_build_skb(str + + /* pull timestamp out of packet data */ + if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { +- igb_ptp_rx_pktstamp(rx_ring->q_vector, skb->data, skb); +- __skb_pull(skb, IGB_TS_HDR_LEN); ++ if (!igb_ptp_rx_pktstamp(rx_ring->q_vector, skb->data, skb)) ++ __skb_pull(skb, IGB_TS_HDR_LEN); + } + + /* update buffer offset */ +--- a/drivers/net/ethernet/intel/igb/igb_ptp.c ++++ b/drivers/net/ethernet/intel/igb/igb_ptp.c +@@ -808,6 +808,9 @@ static void igb_ptp_tx_hwtstamp(struct i + dev_kfree_skb_any(skb); + } + ++#define IGB_RET_PTP_DISABLED 1 ++#define IGB_RET_PTP_INVALID 2 ++ + /** + * igb_ptp_rx_pktstamp - retrieve Rx per packet timestamp + * @q_vector: Pointer to interrupt specific structure +@@ -816,19 +819,29 @@ static void igb_ptp_tx_hwtstamp(struct i + * + * This function is meant to retrieve a timestamp from the first buffer of an + * incoming frame. The value is stored in little endian format starting on +- * byte 8. ++ * byte 8 ++ * ++ * Returns: 0 if success, nonzero if failure + **/ +-void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, +- struct sk_buff *skb) ++int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, ++ struct sk_buff *skb) + { +- __le64 *regval = (__le64 *)va; + struct igb_adapter *adapter = q_vector->adapter; ++ __le64 *regval = (__le64 *)va; + int adjust = 0; + ++ if (!(adapter->ptp_flags & IGB_PTP_ENABLED)) ++ return IGB_RET_PTP_DISABLED; ++ + /* The timestamp is recorded in little endian format. + * DWORD: 0 1 2 3 + * Field: Reserved Reserved SYSTIML SYSTIMH + */ ++ ++ /* check reserved dwords are zero, be/le doesn't matter for zero */ ++ if (regval[0]) ++ return IGB_RET_PTP_INVALID; ++ + igb_ptp_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), + le64_to_cpu(regval[1])); + +@@ -848,6 +861,8 @@ void igb_ptp_rx_pktstamp(struct igb_q_ve + } + skb_hwtstamps(skb)->hwtstamp = + ktime_sub_ns(skb_hwtstamps(skb)->hwtstamp, adjust); ++ ++ return 0; + } + + /** +@@ -858,13 +873,15 @@ void igb_ptp_rx_pktstamp(struct igb_q_ve + * This function is meant to retrieve a timestamp from the internal registers + * of the adapter and store it in the skb. + **/ +-void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, +- struct sk_buff *skb) ++void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb) + { + struct igb_adapter *adapter = q_vector->adapter; + struct e1000_hw *hw = &adapter->hw; +- u64 regval; + int adjust = 0; ++ u64 regval; ++ ++ if (!(adapter->ptp_flags & IGB_PTP_ENABLED)) ++ return; + + /* If this bit is set, then the RX registers contain the time stamp. No + * other packet will be time stamped until we read these registers, so diff --git a/patches.suse/liquidio-Fix-unintented-sign-extension-of-a-left-shi.patch b/patches.suse/liquidio-Fix-unintented-sign-extension-of-a-left-shi.patch new file mode 100644 index 0000000..9ba7386 --- /dev/null +++ b/patches.suse/liquidio-Fix-unintented-sign-extension-of-a-left-shi.patch @@ -0,0 +1,41 @@ +From: Colin Ian King +Date: Wed, 7 Apr 2021 11:12:48 +0100 +Subject: liquidio: Fix unintented sign extension of a left shift of a u16 +Patch-mainline: v5.13-rc1 +Git-commit: 298b58f00c0f86868ea717426beb5c1198772f81 +References: git-fixes + +The macro CN23XX_PEM_BAR1_INDEX_REG is being used to shift oct->pcie_port +(a u16) left 24 places. There are two subtle issues here, first the +shift gets promoted to an signed int and then sign extended to a u64. +If oct->pcie_port is 0x80 or more then the upper bits get sign extended +to 1. Secondly shfiting a u16 24 bits will lead to an overflow so it +needs to be cast to a u64 for all the bits to not overflow. + +It is entirely possible that the u16 port value is never large enough +for this to fail, but it is useful to fix unintended overflows such +as this. + +Fix this by casting the port parameter to the macro to a u64 before +the shift. + +Addresses-Coverity: ("Unintended sign extension") +Fixes: 5bc67f587ba7 ("liquidio: CN23XX register definitions") +Signed-off-by: Colin Ian King +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h ++++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_regs.h +@@ -521,7 +521,7 @@ + #define CN23XX_BAR1_INDEX_OFFSET 3 + + #define CN23XX_PEM_BAR1_INDEX_REG(port, idx) \ +- (CN23XX_PEM_BAR1_INDEX_START + ((port) << CN23XX_PEM_OFFSET) + \ ++ (CN23XX_PEM_BAR1_INDEX_START + (((u64)port) << CN23XX_PEM_OFFSET) + \ + ((idx) << CN23XX_BAR1_INDEX_OFFSET)) + + /*############################ DPI #########################*/ diff --git a/patches.suse/macvlan-macvlan_count_rx-needs-to-be-aware-of-preemp.patch b/patches.suse/macvlan-macvlan_count_rx-needs-to-be-aware-of-preemp.patch new file mode 100644 index 0000000..195e81d --- /dev/null +++ b/patches.suse/macvlan-macvlan_count_rx-needs-to-be-aware-of-preemp.patch @@ -0,0 +1,82 @@ +From: Eric Dumazet +Date: Wed, 10 Mar 2021 01:56:36 -0800 +Subject: macvlan: macvlan_count_rx() needs to be aware of preemption +Patch-mainline: v5.12-rc5 +Git-commit: dd4fa1dae9f4847cc1fd78ca468ad69e16e5db3e +References: git-fixes + +macvlan_count_rx() can be called from process context, it is thus +necessary to disable preemption before calling u64_stats_update_begin() + +syzbot was able to spot this on 32bit arch: + +WARNING: CPU: 1 PID: 4632 at include/linux/seqlock.h:271 __seqprop_assert include/linux/seqlock.h:271 [inline] +WARNING: CPU: 1 PID: 4632 at include/linux/seqlock.h:271 __seqprop_assert.constprop.0+0xf0/0x11c include/linux/seqlock.h:269 +Modules linked in: +Kernel panic - not syncing: panic_on_warn set ... +CPU: 1 PID: 4632 Comm: kworker/1:3 Not tainted 5.12.0-rc2-syzkaller #0 +Hardware name: ARM-Versatile Express +Workqueue: events macvlan_process_broadcast +Backtrace: +[<82740468>] (dump_backtrace) from [<827406dc>] (show_stack+0x18/0x1c arch/arm/kernel/traps.c:252) + r7:00000080 r6:60000093 r5:00000000 r4:8422a3c4 +[<827406c4>] (show_stack) from [<82751b58>] (__dump_stack lib/dump_stack.c:79 [inline]) +[<827406c4>] (show_stack) from [<82751b58>] (dump_stack+0xb8/0xe8 lib/dump_stack.c:120) +[<82751aa0>] (dump_stack) from [<82741270>] (panic+0x130/0x378 kernel/panic.c:231) + r7:830209b4 r6:84069ea4 r5:00000000 r4:844350d0 +[<82741140>] (panic) from [<80244924>] (__warn+0xb0/0x164 kernel/panic.c:605) + r3:8404ec8c r2:00000000 r1:00000000 r0:830209b4 + r7:0000010f +[<80244874>] (__warn) from [<82741520>] (warn_slowpath_fmt+0x68/0xd4 kernel/panic.c:628) + r7:81363f70 r6:0000010f r5:83018e50 r4:00000000 +[<827414bc>] (warn_slowpath_fmt) from [<81363f70>] (__seqprop_assert include/linux/seqlock.h:271 [inline]) +[<827414bc>] (warn_slowpath_fmt) from [<81363f70>] (__seqprop_assert.constprop.0+0xf0/0x11c include/linux/seqlock.h:269) + r8:5a109000 r7:0000000f r6:a568dac0 r5:89802300 r4:00000001 +[<81363e80>] (__seqprop_assert.constprop.0) from [<81364af0>] (u64_stats_update_begin include/linux/u64_stats_sync.h:128 [inline]) +[<81363e80>] (__seqprop_assert.constprop.0) from [<81364af0>] (macvlan_count_rx include/linux/if_macvlan.h:47 [inline]) +[<81363e80>] (__seqprop_assert.constprop.0) from [<81364af0>] (macvlan_broadcast+0x154/0x26c drivers/net/macvlan.c:291) + r5:89802300 r4:8a927740 +[<8136499c>] (macvlan_broadcast) from [<81365020>] (macvlan_process_broadcast+0x258/0x2d0 drivers/net/macvlan.c:317) + r10:81364f78 r9:8a86d000 r8:8a9c7e7c r7:8413aa5c r6:00000000 r5:00000000 + r4:89802840 +[<81364dc8>] (macvlan_process_broadcast) from [<802696a4>] (process_one_work+0x2d4/0x998 kernel/workqueue.c:2275) + r10:00000008 r9:8404ec98 r8:84367a02 r7:ddfe6400 r6:ddfe2d40 r5:898dac80 + r4:8a86d43c +[<802693d0>] (process_one_work) from [<80269dcc>] (worker_thread+0x64/0x54c kernel/workqueue.c:2421) + r10:00000008 r9:8a9c6000 r8:84006d00 r7:ddfe2d78 r6:898dac94 r5:ddfe2d40 + r4:898dac80 +[<80269d68>] (worker_thread) from [<80271f40>] (kthread+0x184/0x1a4 kernel/kthread.c:292) + r10:85247e64 r9:898dac80 r8:80269d68 r7:00000000 r6:8a9c6000 r5:89a2ee40 + r4:8a97bd00 +[<80271dbc>] (kthread) from [<80200114>] (ret_from_fork+0x14/0x20 arch/arm/kernel/entry-common.S:158) +Exception stack(0x8a9c7fb0 to 0x8a9c7ff8) + +Fixes: 412ca1550cbe ("macvlan: Move broadcasts into a work queue") +Signed-off-by: Eric Dumazet +Cc: Herbert Xu +Reported-by: syzbot +Acked-by: Herbert Xu +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + include/linux/if_macvlan.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/include/linux/if_macvlan.h ++++ b/include/linux/if_macvlan.h +@@ -42,13 +42,14 @@ static inline void macvlan_count_rx(cons + if (likely(success)) { + struct vlan_pcpu_stats *pcpu_stats; + +- pcpu_stats = this_cpu_ptr(vlan->pcpu_stats); ++ pcpu_stats = get_cpu_ptr(vlan->pcpu_stats); + u64_stats_update_begin(&pcpu_stats->syncp); + pcpu_stats->rx_packets++; + pcpu_stats->rx_bytes += len; + if (multicast) + pcpu_stats->rx_multicast++; + u64_stats_update_end(&pcpu_stats->syncp); ++ put_cpu_ptr(vlan->pcpu_stats); + } else { + this_cpu_inc(vlan->pcpu_stats->rx_errors); + } diff --git a/patches.suse/mlxsw-spectrum_mr-Update-egress-RIF-list-before-rout.patch b/patches.suse/mlxsw-spectrum_mr-Update-egress-RIF-list-before-rout.patch new file mode 100644 index 0000000..a25060c --- /dev/null +++ b/patches.suse/mlxsw-spectrum_mr-Update-egress-RIF-list-before-rout.patch @@ -0,0 +1,97 @@ +From: Ido Schimmel +Date: Thu, 6 May 2021 10:23:08 +0300 +Subject: mlxsw: spectrum_mr: Update egress RIF list before route's action +Patch-mainline: v5.13-rc1 +Git-commit: cbaf3f6af9c268caf558c8e7ec52bcb35c5455dd +References: bsc#1112374 + +Each multicast route that is forwarding packets (as opposed to trapping +them) points to a list of egress router interfaces (RIFs) through which +packets are replicated. + +A route's action can transition from trap to forward when a RIF is +created for one of the route's egress virtual interfaces (eVIF). When +this happens, the route's action is first updated and only later the +list of egress RIFs is committed to the device. + +This results in the route pointing to an invalid list. In case the list +pointer is out of range (due to uninitialized memory), the device will +complain: + +mlxsw_spectrum2 0000:06:00.0: EMAD reg access failed (tid=5733bf490000905c,reg_id=300f(pefa),type=write,status=7(bad parameter)) + +Fix this by first committing the list of egress RIFs to the device and +only later update the route's action. + +Note that a fix is not needed in the reverse function (i.e., +mlxsw_sp_mr_route_evif_unresolve()), as there the route's action is +first updated and only later the RIF is removed from the list. + +Cc: stable@vger.kernel.org +Fixes: c011ec1bbfd6 ("mlxsw: spectrum: Add the multicast routing offloading logic") +Signed-off-by: Ido Schimmel +Reviewed-by: Petr Machata +Link: https://lore.kernel.org/r/20210506072308.3834303-1-idosch@idosch.org +Signed-off-by: Jakub Kicinski +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c | 30 +++++++++++----------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c ++++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c +@@ -524,6 +524,16 @@ mlxsw_sp_mr_route_evif_resolve(struct ml + u16 erif_index = 0; + int err; + ++ /* Add the eRIF */ ++ if (mlxsw_sp_mr_vif_valid(rve->mr_vif)) { ++ erif_index = mlxsw_sp_rif_index(rve->mr_vif->rif); ++ err = mr->mr_ops->route_erif_add(mlxsw_sp, ++ rve->mr_route->route_priv, ++ erif_index); ++ if (err) ++ return err; ++ } ++ + /* Update the route action, as the new eVIF can be a tunnel or a pimreg + * device which will require updating the action. + */ +@@ -533,17 +543,7 @@ mlxsw_sp_mr_route_evif_resolve(struct ml + rve->mr_route->route_priv, + route_action); + if (err) +- return err; +- } +- +- /* Add the eRIF */ +- if (mlxsw_sp_mr_vif_valid(rve->mr_vif)) { +- erif_index = mlxsw_sp_rif_index(rve->mr_vif->rif); +- err = mr->mr_ops->route_erif_add(mlxsw_sp, +- rve->mr_route->route_priv, +- erif_index); +- if (err) +- goto err_route_erif_add; ++ goto err_route_action_update; + } + + /* Update the minimum MTU */ +@@ -561,14 +561,14 @@ mlxsw_sp_mr_route_evif_resolve(struct ml + return 0; + + err_route_min_mtu_update: +- if (mlxsw_sp_mr_vif_valid(rve->mr_vif)) +- mr->mr_ops->route_erif_del(mlxsw_sp, rve->mr_route->route_priv, +- erif_index); +-err_route_erif_add: + if (route_action != rve->mr_route->route_action) + mr->mr_ops->route_action_update(mlxsw_sp, + rve->mr_route->route_priv, + rve->mr_route->route_action); ++err_route_action_update: ++ if (mlxsw_sp_mr_vif_valid(rve->mr_vif)) ++ mr->mr_ops->route_erif_del(mlxsw_sp, rve->mr_route->route_priv, ++ erif_index); + return err; + } + diff --git a/patches.suse/net-hns3-Fix-for-geneve-tx-checksum-bug.patch b/patches.suse/net-hns3-Fix-for-geneve-tx-checksum-bug.patch new file mode 100644 index 0000000..d7319ec --- /dev/null +++ b/patches.suse/net-hns3-Fix-for-geneve-tx-checksum-bug.patch @@ -0,0 +1,56 @@ +From: Yi Li +Date: Wed, 26 Aug 2020 13:11:50 +0800 +Subject: net: hns3: Fix for geneve tx checksum bug +Patch-mainline: v5.9-rc4 +Git-commit: a156998fc92d3859c8e820f1583f6d0541d643c3 +References: bsc#1104353 FATE#326415 + +when skb->encapsulation is 0, skb->ip_summed is CHECKSUM_PARTIAL +and it is udp packet, which has a dest port as the IANA assigned. +the hardware is expected to do the checksum offload, but the +hardware will not do the checksum offload when udp dest port is +6081. + +This patch fixes it by doing the checksum in software. + +Reported-by: Li Bing +Signed-off-by: Yi Li +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include "hnae3.h" + #include "hns3_enet.h" +@@ -779,16 +780,19 @@ static int hns3_get_l4_protocol(struct s + * and it is udp packet, which has a dest port as the IANA assigned. + * the hardware is expected to do the checksum offload, but the + * hardware will not do the checksum offload when udp dest port is +- * 4789. ++ * 4789 or 6081. + */ + static bool hns3_tunnel_csum_bug(struct sk_buff *skb) + { +-#define IANA_VXLAN_PORT 4789 ++#define IANA_VXLAN_UDP_PORT 4789 ++#define GENEVE_UDP_PORT 6081 + union l4_hdr_info l4; + + l4.hdr = skb_transport_header(skb); + +- if (!(!skb->encapsulation && l4.udp->dest == htons(IANA_VXLAN_PORT))) ++ if (!(!skb->encapsulation && ++ (l4.udp->dest == htons(IANA_VXLAN_UDP_PORT) || ++ l4.udp->dest == htons(GENEVE_UDP_PORT)))) + return false; + + skb_checksum_help(skb); diff --git a/patches.suse/net-hns3-add-check-for-HNS3_NIC_STATE_INITED-in-hns3.patch b/patches.suse/net-hns3-add-check-for-HNS3_NIC_STATE_INITED-in-hns3.patch new file mode 100644 index 0000000..30ffc93 --- /dev/null +++ b/patches.suse/net-hns3-add-check-for-HNS3_NIC_STATE_INITED-in-hns3.patch @@ -0,0 +1,37 @@ +From: Jian Shen +Date: Thu, 29 Apr 2021 16:34:52 +0800 +Subject: net: hns3: add check for HNS3_NIC_STATE_INITED in + hns3_reset_notify_up_enet() +Patch-mainline: v5.13-rc1 +Git-commit: b4047aac4ec1066bab6c71950623746d7bcf7154 +References: bsc#1104353 FATE#326415 + +In some cases, the device is not initialized because reset failed. +If another task calls hns3_reset_notify_up_enet() before reset +retry, it will cause an error since uninitialized pointer access. +So add check for HNS3_NIC_STATE_INITED before calling +hns3_nic_net_open() in hns3_reset_notify_up_enet(). + +Fixes: bb6b94a896d4 ("net: hns3: Add reset interface implementation in client") +Signed-off-by: Jian Shen +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +@@ -4224,6 +4224,11 @@ static int hns3_reset_notify_up_enet(str + struct hns3_nic_priv *priv = netdev_priv(kinfo->netdev); + int ret = 0; + ++ if (!test_bit(HNS3_NIC_STATE_INITED, &priv->state)) { ++ netdev_err(kinfo->netdev, "device is not initialized yet\n"); ++ return -EFAULT; ++ } ++ + clear_bit(HNS3_NIC_STATE_RESETTING, &priv->state); + + if (netif_running(kinfo->netdev)) { diff --git a/patches.suse/net-hns3-disable-phy-loopback-setting-in-hclge_mac_s.patch b/patches.suse/net-hns3-disable-phy-loopback-setting-in-hclge_mac_s.patch new file mode 100644 index 0000000..0e7bdf0 --- /dev/null +++ b/patches.suse/net-hns3-disable-phy-loopback-setting-in-hclge_mac_s.patch @@ -0,0 +1,32 @@ +From: Yufeng Mo +Date: Fri, 30 Apr 2021 17:06:22 +0800 +Subject: net: hns3: disable phy loopback setting in hclge_mac_start_phy +Patch-mainline: v5.13-rc1 +Git-commit: 472497d0bdae890a896013332a0b673f9acdf2bf +References: bsc#1104353 FATE#326415 + +If selftest and reset are performed at the same time, the phy +loopback setting may be still in enable state after the reset, +and device cannot link up. So fix this issue by disabling phy +loopback before phy_start(). + +Fixes: 256727da7395 ("net: hns3: Add MDIO support to HNS3 Ethernet driver for hip08 SoC") +Signed-off-by: Yufeng Mo +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +@@ -258,6 +258,8 @@ void hclge_mac_start_phy(struct hclge_de + if (!phydev) + return; + ++ phy_loopback(phydev, false); ++ + phy_start(phydev); + } + diff --git a/patches.suse/net-hns3-fix-for-vxlan-gpe-tx-checksum-bug.patch b/patches.suse/net-hns3-fix-for-vxlan-gpe-tx-checksum-bug.patch new file mode 100644 index 0000000..f9e8109 --- /dev/null +++ b/patches.suse/net-hns3-fix-for-vxlan-gpe-tx-checksum-bug.patch @@ -0,0 +1,44 @@ +From: Hao Chen +Date: Fri, 30 Apr 2021 17:06:19 +0800 +Subject: net: hns3: fix for vxlan gpe tx checksum bug +Patch-mainline: v5.13-rc1 +Git-commit: 905416f18fe74bdd4de91bf94ef5a790a36e4b99 +References: bsc#1104353 FATE#326415 + +When skb->ip_summed is CHECKSUM_PARTIAL, for non-tunnel udp packet, +which has a dest port as the IANA assigned, the hardware is expected +to do the checksum offload, but the hardware whose version is below +V3 will not do the checksum offload when udp dest port is 4790. + +So fixes it by doing the checksum in software for this case. + +Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC") +Signed-off-by: Hao Chen +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +@@ -780,7 +780,7 @@ static int hns3_get_l4_protocol(struct s + * and it is udp packet, which has a dest port as the IANA assigned. + * the hardware is expected to do the checksum offload, but the + * hardware will not do the checksum offload when udp dest port is +- * 4789 or 6081. ++ * 4789, 4790 or 6081. + */ + static bool hns3_tunnel_csum_bug(struct sk_buff *skb) + { +@@ -792,7 +792,8 @@ static bool hns3_tunnel_csum_bug(struct + + if (!(!skb->encapsulation && + (l4.udp->dest == htons(IANA_VXLAN_UDP_PORT) || +- l4.udp->dest == htons(GENEVE_UDP_PORT)))) ++ l4.udp->dest == htons(GENEVE_UDP_PORT) || ++ l4.udp->dest == htons(4790)))) + return false; + + skb_checksum_help(skb); diff --git a/patches.suse/net-hns3-fix-incorrect-configuration-for-igu_egu_hw_.patch b/patches.suse/net-hns3-fix-incorrect-configuration-for-igu_egu_hw_.patch new file mode 100644 index 0000000..99fc58e --- /dev/null +++ b/patches.suse/net-hns3-fix-incorrect-configuration-for-igu_egu_hw_.patch @@ -0,0 +1,47 @@ +From: Yufeng Mo +Date: Thu, 29 Apr 2021 16:34:50 +0800 +Subject: net: hns3: fix incorrect configuration for igu_egu_hw_err +Patch-mainline: v5.13-rc1 +Git-commit: 2867298dd49ee84214b8721521dc7a5a6382520c +References: bsc#1104353 FATE#326415 + +According to the UM, the type and enable status of igu_egu_hw_err +should be configured separately. Currently, the type field is +incorrect when disable this error. So fix it by configuring these +two fields separately. + +Fixes: bf1faf9415dd ("net: hns3: Add enable and process hw errors from IGU, EGU and NCSI") +Signed-off-by: Yufeng Mo +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c | 3 ++- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +@@ -760,8 +760,9 @@ static int hclge_config_igu_egu_hw_err_i + + /* configure IGU,EGU error interrupts */ + hclge_cmd_setup_basic_desc(&desc, HCLGE_IGU_COMMON_INT_EN, false); ++ desc.data[0] = cpu_to_le32(HCLGE_IGU_ERR_INT_TYPE); + if (en) +- desc.data[0] = cpu_to_le32(HCLGE_IGU_ERR_INT_EN); ++ desc.data[0] |= cpu_to_le32(HCLGE_IGU_ERR_INT_EN); + + desc.data[1] = cpu_to_le32(HCLGE_IGU_ERR_INT_EN_MASK); + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h +@@ -32,7 +32,8 @@ + #define HCLGE_TQP_ECC_ERR_INT_EN_MASK 0x0FFF + #define HCLGE_MSIX_SRAM_ECC_ERR_INT_EN_MASK 0x0F000000 + #define HCLGE_MSIX_SRAM_ECC_ERR_INT_EN 0x0F000000 +-#define HCLGE_IGU_ERR_INT_EN 0x0000066F ++#define HCLGE_IGU_ERR_INT_EN 0x0000000F ++#define HCLGE_IGU_ERR_INT_TYPE 0x00000660 + #define HCLGE_IGU_ERR_INT_EN_MASK 0x000F + #define HCLGE_IGU_TNL_ERR_INT_EN 0x0002AABF + #define HCLGE_IGU_TNL_ERR_INT_EN_MASK 0x003F diff --git a/patches.suse/net-hns3-initialize-the-message-content-in-hclge_get.patch b/patches.suse/net-hns3-initialize-the-message-content-in-hclge_get.patch new file mode 100644 index 0000000..75b7009 --- /dev/null +++ b/patches.suse/net-hns3-initialize-the-message-content-in-hclge_get.patch @@ -0,0 +1,31 @@ +From: Yufeng Mo +Date: Thu, 29 Apr 2021 16:34:51 +0800 +Subject: net: hns3: initialize the message content in hclge_get_link_mode() +Patch-mainline: v5.13-rc1 +Git-commit: 568a54bdf70b143f3e0befa298e22ad469ffc732 +References: bsc#1126390 + +The message sent to VF should be initialized, otherwise random +value of some contents may cause improper processing by the target. +So add a initialization to message in hclge_get_link_mode(). + +Fixes: 9194d18b0577 ("net: hns3: fix the problem that the supported port is empty") +Signed-off-by: Yufeng Mo +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +@@ -455,7 +455,7 @@ static void hclge_get_link_mode(struct h + unsigned long advertising; + unsigned long supported; + unsigned long send_data; +- u8 msg_data[10]; ++ u8 msg_data[10] = {}; + u8 dest_vfid; + + advertising = hdev->hw.mac.advertising[0]; diff --git a/patches.suse/net-hns3-use-netif_tx_disable-to-stop-the-transmit-q.patch b/patches.suse/net-hns3-use-netif_tx_disable-to-stop-the-transmit-q.patch new file mode 100644 index 0000000..5b68cad --- /dev/null +++ b/patches.suse/net-hns3-use-netif_tx_disable-to-stop-the-transmit-q.patch @@ -0,0 +1,37 @@ +From: Peng Li +Date: Fri, 30 Apr 2021 17:06:20 +0800 +Subject: net: hns3: use netif_tx_disable to stop the transmit queue +Patch-mainline: v5.13-rc1 +Git-commit: b416e872be06fdace3c36cf5210130509d0f0e72 +References: bsc#1104353 FATE#326415 + +Currently, netif_tx_stop_all_queues() is used to ensure that +the xmit is not running, but for the concurrent case it will +not take effect, since netif_tx_stop_all_queues() just sets +a flag without locking to indicate that the xmit queue(s) +should not be run. + +So use netif_tx_disable() to replace netif_tx_stop_all_queues(), +it takes the xmit queue lock while marking the queue stopped. + +Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC") +Signed-off-by: Peng Li +Signed-off-by: Huazhong Tan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c ++++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +@@ -523,8 +523,8 @@ static int hns3_nic_net_stop(struct net_ + if (h->ae_algo->ops->set_timer_task) + h->ae_algo->ops->set_timer_task(priv->ae_handle, false); + +- netif_tx_stop_all_queues(netdev); + netif_carrier_off(netdev); ++ netif_tx_disable(netdev); + + hns3_nic_net_down(netdev); + diff --git a/patches.suse/net-mlx4_en-update-moderation-when-config-reset.patch b/patches.suse/net-mlx4_en-update-moderation-when-config-reset.patch new file mode 100644 index 0000000..55c3e21 --- /dev/null +++ b/patches.suse/net-mlx4_en-update-moderation-when-config-reset.patch @@ -0,0 +1,78 @@ +From: "Kevin(Yudong) Yang" +Date: Wed, 3 Mar 2021 09:43:54 -0500 +Subject: net/mlx4_en: update moderation when config reset +Patch-mainline: v5.12-rc3 +Git-commit: 00ff801bb8ce6711e919af4530b6ffa14a22390a +References: git-fixes + +This patch fixes a bug that the moderation config will not be +applied when calling mlx4_en_reset_config. For example, when +turning on rx timestamping, mlx4_en_reset_config() will be called, +causing the NIC to forget previous moderation config. + +This fix is in phase with a previous fix: +commit 79c54b6bbf06 ("net/mlx4_en: Fix TX moderation info loss +after set_ringparam is called") + +Tested: Before this patch, on a host with NIC using mlx4, run +netserver and stream TCP to the host at full utilization. +$ sar -I SUM 1 + INTR intr/s +14:03:56 sum 48758.00 + +After rx hwtstamp is enabled: +$ sar -I SUM 1 +14:10:38 sum 317771.00 +We see the moderation is not working properly and issued 7x more +interrupts. + +After the patch, and turned on rx hwtstamp, the rate of interrupts +is as expected: +$ sar -I SUM 1 +14:52:11 sum 49332.00 + +Fixes: 79c54b6bbf06 ("net/mlx4_en: Fix TX moderation info loss after set_ringparam is called") +Signed-off-by: Kevin(Yudong) Yang +Reviewed-by: Eric Dumazet +Reviewed-by: Neal Cardwell +CC: Tariq Toukan +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 2 +- + drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 ++ + drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + + 3 files changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c ++++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +@@ -47,7 +47,7 @@ + #define EN_ETHTOOL_SHORT_MASK cpu_to_be16(0xffff) + #define EN_ETHTOOL_WORD_MASK cpu_to_be32(0xffffffff) + +-static int mlx4_en_moderation_update(struct mlx4_en_priv *priv) ++int mlx4_en_moderation_update(struct mlx4_en_priv *priv) + { + int i, t; + int err = 0; +--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c ++++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +@@ -3662,6 +3662,8 @@ int mlx4_en_reset_config(struct net_devi + en_err(priv, "Failed starting port\n"); + } + ++ if (!err) ++ err = mlx4_en_moderation_update(priv); + out: + mutex_unlock(&mdev->state_lock); + kfree(tmp); +--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h ++++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +@@ -798,6 +798,7 @@ void mlx4_en_ptp_overflow_check(struct m + #define DEV_FEATURE_CHANGED(dev, new_features, feature) \ + ((dev->features & feature) ^ (new_features & feature)) + ++int mlx4_en_moderation_update(struct mlx4_en_priv *priv); + int mlx4_en_reset_config(struct net_device *dev, + struct hwtstamp_config ts_config, + netdev_features_t new_features); diff --git a/patches.suse/net-mlx5e-Fix-error-path-for-ethtool-set-priv-flag.patch b/patches.suse/net-mlx5e-Fix-error-path-for-ethtool-set-priv-flag.patch new file mode 100644 index 0000000..3072fd1 --- /dev/null +++ b/patches.suse/net-mlx5e-Fix-error-path-for-ethtool-set-priv-flag.patch @@ -0,0 +1,41 @@ +From: Aya Levin +Date: Thu, 11 Mar 2021 17:46:35 +0200 +Subject: net/mlx5e: Fix error path for ethtool set-priv-flag +Patch-mainline: v5.12-rc5 +Git-commit: 4eacfe72e3e037e3fc019113df32c39a705148c2 +References: git-fixes + +Expose error value when failing to comply to command: +$ ethtool --set-priv-flags eth2 rx_cqe_compress [on/off] + +Fixes: be7e87f92b58 ("net/mlx5e: Fail safe cqe compressing/moderation mode setting") +Signed-off-by: Aya Levin +Reviewed-by: Tariq Toukan +Signed-off-by: Saeed Mahameed +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +@@ -1611,6 +1611,7 @@ static int set_pflag_rx_cqe_compress(str + { + struct mlx5e_priv *priv = netdev_priv(netdev); + struct mlx5_core_dev *mdev = priv->mdev; ++ int err; + + if (!MLX5_CAP_GEN(mdev, cqe_compression)) + return -EOPNOTSUPP; +@@ -1620,7 +1621,10 @@ static int set_pflag_rx_cqe_compress(str + return -EINVAL; + } + +- mlx5e_modify_rx_cqe_compression_locked(priv, enable); ++ err = mlx5e_modify_rx_cqe_compression_locked(priv, enable); ++ if (err) ++ return err; ++ + priv->channels.params.rx_cqe_compress_def = enable; + + return 0; diff --git a/patches.suse/net-qlcnic-Fix-a-use-after-free-in-qlcnic_83xx_get_m.patch b/patches.suse/net-qlcnic-Fix-a-use-after-free-in-qlcnic_83xx_get_m.patch new file mode 100644 index 0000000..194e269 --- /dev/null +++ b/patches.suse/net-qlcnic-Fix-a-use-after-free-in-qlcnic_83xx_get_m.patch @@ -0,0 +1,37 @@ +From: Lv Yunlong +Date: Wed, 10 Mar 2021 20:01:40 -0800 +Subject: net/qlcnic: Fix a use after free in qlcnic_83xx_get_minidump_template +Patch-mainline: v5.12-rc5 +Git-commit: db74623a3850db99cb9692fda9e836a56b74198d +References: git-fixes + +In qlcnic_83xx_get_minidump_template, fw_dump->tmpl_hdr was freed by +vfree(). But unfortunately, it is used when extended is true. + +Fixes: 7061b2bdd620e ("qlogic: Deletion of unnecessary checks before two function calls") +Signed-off-by: Lv Yunlong +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c ++++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c +@@ -1424,6 +1424,7 @@ void qlcnic_83xx_get_minidump_template(s + + if (fw_dump->tmpl_hdr == NULL || current_version > prev_version) { + vfree(fw_dump->tmpl_hdr); ++ fw_dump->tmpl_hdr = NULL; + + if (qlcnic_83xx_md_check_extended_dump_capability(adapter)) + extended = !qlcnic_83xx_extend_md_capab(adapter); +@@ -1442,6 +1443,8 @@ void qlcnic_83xx_get_minidump_template(s + struct qlcnic_83xx_dump_template_hdr *hdr; + + hdr = fw_dump->tmpl_hdr; ++ if (!hdr) ++ return; + hdr->drv_cap_mask = 0x1f; + fw_dump->cap_mask = 0x1f; + dev_info(&pdev->dev, diff --git a/patches.suse/net-smc-fix-a-null-pointer-dereference b/patches.suse/net-smc-fix-a-null-pointer-dereference deleted file mode 100644 index 93900ea..0000000 --- a/patches.suse/net-smc-fix-a-null-pointer-dereference +++ /dev/null @@ -1,32 +0,0 @@ -From: Kangjie Lu -Date: Thu, 11 Apr 2019 11:17:31 +0200 -Subject: net/smc: fix a NULL pointer dereference -Git-commit: e183d4e414b64711baf7a04e214b61969ca08dfa -Patch-mainline: v5.1-rc6 -References: bsc#1134607 bsc#1134618 LTC#177518 LTC#177520 - -In case alloc_ordered_workqueue fails, the fix returns NULL -to avoid NULL pointer dereference. - -Signed-off-by: Kangjie Lu -Signed-off-by: Ursula Braun -Signed-off-by: David S. Miller -Acked-by: Petr Tesarik ---- - net/smc/smc_ism.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/net/smc/smc_ism.c -+++ b/net/smc/smc_ism.c -@@ -290,6 +290,11 @@ struct smcd_dev *smcd_alloc_dev(struct d - INIT_LIST_HEAD(&smcd->vlan); - smcd->event_wq = alloc_ordered_workqueue("ism_evt_wq-%s)", - WQ_MEM_RECLAIM, name); -+ if (!smcd->event_wq) { -+ kfree(smcd->conn); -+ kfree(smcd); -+ return NULL; -+ } - return smcd; - } - EXPORT_SYMBOL_GPL(smcd_alloc_dev); diff --git a/patches.suse/net-thunderx-Fix-unintentional-sign-extension-issue.patch b/patches.suse/net-thunderx-Fix-unintentional-sign-extension-issue.patch new file mode 100644 index 0000000..08a7eb9 --- /dev/null +++ b/patches.suse/net-thunderx-Fix-unintentional-sign-extension-issue.patch @@ -0,0 +1,35 @@ +From: Colin Ian King +Date: Fri, 9 Apr 2021 14:07:26 +0100 +Subject: net: thunderx: Fix unintentional sign extension issue +Patch-mainline: v5.13-rc1 +Git-commit: e701a25840360706fe4cf5de0015913ca19c274b +References: git-fixes + +The shifting of the u8 integers rq->caching by 26 bits to +the left will be promoted to a 32 bit signed int and then +sign-extended to a u64. In the event that rq->caching is +greater than 0x1f then all then all the upper 32 bits of +the u64 end up as also being set because of the int +sign-extension. Fix this by casting the u8 values to a +u64 before the 26 bit left shift. + +Addresses-Coverity: ("Unintended sign extension") +Fixes: 4863dea3fab0 ("net: Adding support for Cavium ThunderX network controller") +Signed-off-by: Colin Ian King +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c ++++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +@@ -779,7 +779,7 @@ static void nicvf_rcv_queue_config(struc + mbx.rq.msg = NIC_MBOX_MSG_RQ_CFG; + mbx.rq.qs_num = qs->vnic_id; + mbx.rq.rq_num = qidx; +- mbx.rq.cfg = (rq->caching << 26) | (rq->cq_qs << 19) | ++ mbx.rq.cfg = ((u64)rq->caching << 26) | (rq->cq_qs << 19) | + (rq->cq_idx << 16) | (rq->cont_rbdr_qs << 9) | + (rq->cont_qs_rbdr_idx << 8) | + (rq->start_rbdr_qs << 1) | (rq->start_qs_rbdr_idx); diff --git a/patches.suse/net-xdp-Update-pkt_type-if-generic-XDP-changes-unica.patch b/patches.suse/net-xdp-Update-pkt_type-if-generic-XDP-changes-unica.patch new file mode 100644 index 0000000..92e6413 --- /dev/null +++ b/patches.suse/net-xdp-Update-pkt_type-if-generic-XDP-changes-unica.patch @@ -0,0 +1,68 @@ +From: Martin Willi +Date: Mon, 19 Apr 2021 16:15:59 +0200 +Subject: net, xdp: Update pkt_type if generic XDP changes unicast MAC +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Patch-mainline: v5.13-rc1 +Git-commit: 22b6034323fd736f260e00b9ea85c634abeb3446 +References: bsc#1109837 + +If a generic XDP program changes the destination MAC address from/to +multicast/broadcast, the skb->pkt_type is updated to properly handle +the packet when passed up the stack. When changing the MAC from/to +the NICs MAC, PACKET_HOST/OTHERHOST is not updated, though, making +the behavior different from that of native XDP. + +Remember the PACKET_HOST/OTHERHOST state before calling the program +in generic XDP, and update pkt_type accordingly if the destination +MAC address has changed. As eth_type_trans() assumes a default +pkt_type of PACKET_HOST, restore that before calling it. + +The use case for this is when a XDP program wants to push received +packets up the stack by rewriting the MAC to the NICs MAC, for +example by cluster nodes sharing MAC addresses. + +Fixes: 297249569932 ("net: fix generic XDP to handle if eth header was mangled") +Signed-off-by: Martin Willi +Signed-off-by: Daniel Borkmann +Acked-by: Toke Høiland-Jørgensen +Link: https://lore.kernel.org/bpf/20210419141559.8611-1-martin@strongswan.org +Acked-by: Thomas Bogendoerfer +--- + net/core/dev.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -4274,9 +4274,9 @@ static u32 netif_receive_generic_xdp(str + struct netdev_rx_queue *rxqueue; + void *orig_data, *orig_data_end; + u32 metalen, act = XDP_DROP; ++ bool orig_bcast, orig_host; + __be16 orig_eth_type; + struct ethhdr *eth; +- bool orig_bcast; + int hlen, off; + u32 mac_len; + +@@ -4318,6 +4318,7 @@ static u32 netif_receive_generic_xdp(str + orig_data_end = xdp->data_end; + orig_data = xdp->data; + eth = (struct ethhdr *)xdp->data; ++ orig_host = ether_addr_equal_64bits(eth->h_dest, skb->dev->dev_addr); + orig_bcast = is_multicast_ether_addr_64bits(eth->h_dest); + orig_eth_type = eth->h_proto; + +@@ -4351,8 +4352,11 @@ static u32 netif_receive_generic_xdp(str + /* check if XDP changed eth hdr such SKB needs update */ + eth = (struct ethhdr *)xdp->data; + if ((orig_eth_type != eth->h_proto) || ++ (orig_host != ether_addr_equal_64bits(eth->h_dest, ++ skb->dev->dev_addr)) || + (orig_bcast != is_multicast_ether_addr_64bits(eth->h_dest))) { + __skb_push(skb, ETH_HLEN); ++ skb->pkt_type = PACKET_HOST; + skb->protocol = eth_type_trans(skb, skb->dev); + } + diff --git a/patches.suse/netdevice-Add-missing-IFF_PHONY_HEADROOM-self-defini.patch b/patches.suse/netdevice-Add-missing-IFF_PHONY_HEADROOM-self-defini.patch new file mode 100644 index 0000000..916f0da --- /dev/null +++ b/patches.suse/netdevice-Add-missing-IFF_PHONY_HEADROOM-self-defini.patch @@ -0,0 +1,29 @@ +From: Alexander Lobakin +Date: Thu, 18 Feb 2021 20:49:41 +0000 +Subject: netdevice: Add missing IFF_PHONY_HEADROOM self-definition +Patch-mainline: v5.13-rc1 +Git-commit: 2463e073497385ef63c220571013a2b89e9b95cc +References: git-fixes + +This is harmless for now, but can be fatal for future refactors. + +Fixes: 871b642adebe3 ("netdev: introduce ndo_set_rx_headroom") +Signed-off-by: Alexander Lobakin +Signed-off-by: Daniel Borkmann +Acked-by: John Fastabend +Link: https://lore.kernel.org/bpf/20210218204908.5455-2-alobakin@pm.me +Acked-by: Thomas Bogendoerfer +--- + include/linux/netdevice.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -1534,6 +1534,7 @@ enum netdev_priv_flags { + #define IFF_L3MDEV_SLAVE IFF_L3MDEV_SLAVE + #define IFF_TEAM IFF_TEAM + #define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED ++#define IFF_PHONY_HEADROOM IFF_PHONY_HEADROOM + #define IFF_MACSEC IFF_MACSEC + #define IFF_NO_RX_HANDLER IFF_NO_RX_HANDLER + #define IFF_FAILOVER IFF_FAILOVER diff --git a/patches.suse/powerpc-64s-Fix-crashes-when-toggling-entry-flush-ba.patch b/patches.suse/powerpc-64s-Fix-crashes-when-toggling-entry-flush-ba.patch new file mode 100644 index 0000000..2ee9bb1 --- /dev/null +++ b/patches.suse/powerpc-64s-Fix-crashes-when-toggling-entry-flush-ba.patch @@ -0,0 +1,75 @@ +From aec86b052df6541cc97c5fca44e5934cbea4963b Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Thu, 6 May 2021 14:49:59 +1000 +Subject: [PATCH] powerpc/64s: Fix crashes when toggling entry flush barrier + +References: bsc#1177666 git-fixes +Patch-mainline: v5.13-rc2 +Git-commit: aec86b052df6541cc97c5fca44e5934cbea4963b + +The entry flush mitigation can be enabled/disabled at runtime via a +debugfs file (entry_flush), which causes the kernel to patch itself to +enable/disable the relevant mitigations. + +However depending on which mitigation we're using, it may not be safe to +do that patching while other CPUs are active. For example the following +crash: + + sleeper[15639]: segfault (11) at c000000000004c20 nip c000000000004c20 lr c000000000004c20 + +Shows that we returned to userspace with a corrupted LR that points into +the kernel, due to executing the partially patched call to the fallback +entry flush (ie. we missed the LR restore). + +Fix it by doing the patching under stop machine. The CPUs that aren't +doing the patching will be spinning in the core of the stop machine +logic. That is currently sufficient for our purposes, because none of +the patching we do is to that code or anywhere in the vicinity. + +Fixes: f79643787e0a ("powerpc/64s: flush L1D on kernel entry") +Cc: stable@vger.kernel.org # v5.10+ +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20210506044959.1298123-2-mpe@ellerman.id.au +Acked-by: Michal Suchanek +--- + arch/powerpc/lib/feature-fixups.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c +index 10083add8b33..0aefa6a4a259 100644 +--- a/arch/powerpc/lib/feature-fixups.c ++++ b/arch/powerpc/lib/feature-fixups.c +@@ -299,8 +299,9 @@ void do_uaccess_flush_fixups(enum l1d_flush_type types) + : "unknown"); + } + +-void do_entry_flush_fixups(enum l1d_flush_type types) ++static int __do_entry_flush_fixups(void *data) + { ++ enum l1d_flush_type types = *(enum l1d_flush_type *)data; + unsigned int instrs[3], *dest; + long *start, *end; + int i; +@@ -369,6 +370,19 @@ void do_entry_flush_fixups(enum l1d_flush_type types) + : "ori type" : + (types & L1D_FLUSH_MTTRIG) ? "mttrig type" + : "unknown"); ++ ++ return 0; ++} ++ ++void do_entry_flush_fixups(enum l1d_flush_type types) ++{ ++ /* ++ * The call to the fallback flush can not be safely patched in/out while ++ * other CPUs are executing it. So call __do_entry_flush_fixups() on one ++ * CPU while all other CPUs spin in the stop machine core with interrupts ++ * hard disabled. ++ */ ++ stop_machine(__do_entry_flush_fixups, &types, NULL); + } + + void do_rfi_flush_fixups(enum l1d_flush_type types) +-- +2.26.2 + diff --git a/patches.suse/powerpc-64s-Fix-crashes-when-toggling-stf-barrier.patch b/patches.suse/powerpc-64s-Fix-crashes-when-toggling-stf-barrier.patch new file mode 100644 index 0000000..cd43529 --- /dev/null +++ b/patches.suse/powerpc-64s-Fix-crashes-when-toggling-stf-barrier.patch @@ -0,0 +1,83 @@ +From 8ec7791bae1327b1c279c5cd6e929c3b12daaf0a Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Thu, 6 May 2021 14:49:58 +1000 +Subject: [PATCH] powerpc/64s: Fix crashes when toggling stf barrier + +References: bsc#1087082 git-fixes +Patch-mainline: v5.13-rc2 +Git-commit: 8ec7791bae1327b1c279c5cd6e929c3b12daaf0a + +The STF (store-to-load forwarding) barrier mitigation can be +enabled/disabled at runtime via a debugfs file (stf_barrier), which +causes the kernel to patch itself to enable/disable the relevant +mitigations. + +However depending on which mitigation we're using, it may not be safe to +do that patching while other CPUs are active. For example the following +crash: + + User access of kernel address (c00000003fff5af0) - exploit attempt? (uid: 0) + segfault (11) at c00000003fff5af0 nip 7fff8ad12198 lr 7fff8ad121f8 code 1 + code: 40820128 e93c00d0 e9290058 7c292840 40810058 38600000 4bfd9a81 e8410018 + code: 2c030006 41810154 3860ffb6 e9210098 7d295279 39400000 40820a3c + +Shows that we returned to userspace without restoring the user r13 +value, due to executing the partially patched STF exit code. + +Fix it by doing the patching under stop machine. The CPUs that aren't +doing the patching will be spinning in the core of the stop machine +logic. That is currently sufficient for our purposes, because none of +the patching we do is to that code or anywhere in the vicinity. + +Fixes: a048a07d7f45 ("powerpc/64s: Add support for a store forwarding barrier at kernel entry/exit") +Cc: stable@vger.kernel.org # v4.17+ +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20210506044959.1298123-1-mpe@ellerman.id.au +Acked-by: Michal Suchanek +--- + arch/powerpc/lib/feature-fixups.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c +index 1fd31b4b0e13..10083add8b33 100644 +--- a/arch/powerpc/lib/feature-fixups.c ++++ b/arch/powerpc/lib/feature-fixups.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -227,11 +228,25 @@ static void do_stf_exit_barrier_fixups(enum stf_barrier_type types) + : "unknown"); + } + ++static int __do_stf_barrier_fixups(void *data) ++{ ++ enum stf_barrier_type *types = data; ++ ++ do_stf_entry_barrier_fixups(*types); ++ do_stf_exit_barrier_fixups(*types); ++ ++ return 0; ++} + + void do_stf_barrier_fixups(enum stf_barrier_type types) + { +- do_stf_entry_barrier_fixups(types); +- do_stf_exit_barrier_fixups(types); ++ /* ++ * The call to the fallback entry flush, and the fallback/sync-ori exit ++ * flush can not be safely patched in/out while other CPUs are executing ++ * them. So call __do_stf_barrier_fixups() on one CPU while all other CPUs ++ * spin in the stop machine core with interrupts hard disabled. ++ */ ++ stop_machine(__do_stf_barrier_fixups, &types, NULL); + } + + void do_rfi_flush_fixups(enum l1d_flush_type types) +-- +2.26.2 + diff --git a/patches.suse/powerpc-64s-flush-L1D-after-user-accesses.patch b/patches.suse/powerpc-64s-flush-L1D-after-user-accesses.patch index 22e61b8..00e8c86 100644 --- a/patches.suse/powerpc-64s-flush-L1D-after-user-accesses.patch +++ b/patches.suse/powerpc-64s-flush-L1D-after-user-accesses.patch @@ -424,11 +424,10 @@ index 1432cf996201..695432965f20 100644 __entry_flush_fixup : AT(ADDR(__entry_flush_fixup) - LOAD_OFFSET) { __start___entry_flush_fixup = .; diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c -index 22bae8741cae..065a3426f0eb 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c @@ -232,6 +232,56 @@ void do_stf_barrier_fixups(enum stf_barrier_type types) - do_stf_exit_barrier_fixups(types); + stop_machine(__do_stf_barrier_fixups, &types, NULL); } +void do_uaccess_flush_fixups(enum l1d_flush_type types) diff --git a/patches.suse/powerpc-64s-flush-L1D-on-kernel-entry.patch b/patches.suse/powerpc-64s-flush-L1D-on-kernel-entry.patch index d0780a6..f64c4cd 100644 --- a/patches.suse/powerpc-64s-flush-L1D-on-kernel-entry.patch +++ b/patches.suse/powerpc-64s-flush-L1D-on-kernel-entry.patch @@ -368,11 +368,10 @@ index d081d726ca8e..1432cf996201 100644 __stf_exit_barrier_fixup : AT(ADDR(__stf_exit_barrier_fixup) - LOAD_OFFSET) { __start___stf_exit_barrier_fixup = .; diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c -index dbe478e7b8e0..22bae8741cae 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c @@ -232,6 +232,60 @@ void do_stf_barrier_fixups(enum stf_barrier_type types) - do_stf_exit_barrier_fixups(types); + stop_machine(__do_stf_barrier_fixups, &types, NULL); } +void do_entry_flush_fixups(enum l1d_flush_type types) diff --git a/patches.suse/s390-dasd-fix-hanging-dasd-driver-unbind b/patches.suse/s390-dasd-fix-hanging-dasd-driver-unbind new file mode 100644 index 0000000..2176954 --- /dev/null +++ b/patches.suse/s390-dasd-fix-hanging-dasd-driver-unbind @@ -0,0 +1,47 @@ +From: Stefan Haberland +Date: Fri, 5 Mar 2021 13:54:38 +0100 +Subject: s390/dasd: fix hanging DASD driver unbind +Git-commit: 7d365bd0bff3c0310c39ebaffc9a8458e036d666 +Patch-mainline: v5.12-rc3 +References: bsc#1183754 LTC#192081 + +In case of an unbind of the DASD device driver the function +dasd_generic_remove() is called which shuts down the device. +Among others this functions removes the int_handler from the cdev. +During shutdown the device cancels all outstanding IO requests and waits +for completion of the clear request. +Unfortunately the clear interrupt will never be received when there is no +interrupt handler connected. + +Fix by moving the int_handler removal after the call to the state machine +where no request or interrupt is outstanding. + +Cc: stable@vger.kernel.org +Signed-off-by: Stefan Haberland +Tested-by: Bjoern Walk +Reviewed-by: Jan Hoeppner +Signed-off-by: Jens Axboe +Acked-by: Petr Tesarik +--- + drivers/s390/block/dasd.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/s390/block/dasd.c ++++ b/drivers/s390/block/dasd.c +@@ -3410,8 +3410,6 @@ void dasd_generic_remove(struct ccw_devi + struct dasd_device *device; + struct dasd_block *block; + +- cdev->handler = NULL; +- + device = dasd_device_from_cdev(cdev); + if (IS_ERR(device)) { + dasd_remove_sysfs_files(cdev); +@@ -3430,6 +3428,7 @@ void dasd_generic_remove(struct ccw_devi + * no quite down yet. + */ + dasd_set_target_state(device, DASD_STATE_NEW); ++ cdev->handler = NULL; + /* dasd_delete_device destroys the device reference. */ + block = device->block; + dasd_delete_device(device); diff --git a/patches.suse/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind b/patches.suse/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind new file mode 100644 index 0000000..91d97e9 --- /dev/null +++ b/patches.suse/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind @@ -0,0 +1,38 @@ +From: Stefan Haberland +Date: Fri, 5 Mar 2021 13:54:39 +0100 +Subject: s390/dasd: fix hanging IO request during DASD driver unbind +Git-commit: 66f669a272898feb1c69b770e1504aa2ec7723d1 +Patch-mainline: v5.12-rc3 +References: bsc#1183754 LTC#192081 + +Prevent that an IO request is build during device shutdown initiated by +a driver unbind. This request will never be able to be processed or +canceled and will hang forever. This will lead also to a hanging unbind. + +Fix by checking not only if the device is in READY state but also check +that there is no device offline initiated before building a new IO request. + +Fixes: e443343e509a ("s390/dasd: blk-mq conversion") + +Cc: # v4.14+ +Signed-off-by: Stefan Haberland +Tested-by: Bjoern Walk +Reviewed-by: Jan Hoeppner +Signed-off-by: Jens Axboe +Acked-by: Petr Tesarik +--- + drivers/s390/block/dasd.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/s390/block/dasd.c ++++ b/drivers/s390/block/dasd.c +@@ -2925,7 +2925,8 @@ static blk_status_t do_dasd_request(stru + + basedev = block->base; + spin_lock_irq(&dq->lock); +- if (basedev->state < DASD_STATE_READY) { ++ if (basedev->state < DASD_STATE_READY || ++ test_bit(DASD_FLAG_OFFLINE, &basedev->flags)) { + DBF_DEV_EVENT(DBF_ERR, basedev, + "device not ready for request %p", req); + rc = BLK_STS_IOERR; diff --git a/patches.suse/s390-sles12sp5-kdump-fix-out-of-memory-with-PCI.patch b/patches.suse/s390-sles12sp5-kdump-fix-out-of-memory-with-PCI.patch new file mode 100644 index 0000000..dc6a5df --- /dev/null +++ b/patches.suse/s390-sles12sp5-kdump-fix-out-of-memory-with-PCI.patch @@ -0,0 +1,43 @@ +From: Gerald Schaefer +Subject: s390/kdump: fix out-of-memory with PCI +Patch-mainline: never, fixed upstream with larger code rework +References: bsc#1182256 LTC#191375 + +Description: s390/kdump: fix out-of-memory with PCI +Symptom: The kdump kernel runs out of memory when allocating memory for + PCI IOMMU bitmaps in zpci_dma_init_device(). +Problem: The kdump kernel does not properly restrict memory_end, which + the PCI code uses to calculate the size of the IOMMU bitmap, and + too much memory will be allocated. +Solution: Properly restrict memory_end to the available memory of the + kdump kernel (OLDMEM_SIZE), similar to how it would be done with + a "mem=" kernel parameter. + This was fixed inadvertently by an unrelated upstream commit + 73045a08cf55 ("s390: unify identity mapping limits handling"). + But that commit cannot easily be backported to distribution + levels, so only the part that fixes this bug will be submitted. +Reproduction: Try kdump on a system with large memory size and many PCI + functions. + + +Signed-off-by: Gerald Schaefer +Acked-by: Petr Tesarik +--- + arch/s390/kernel/setup.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/arch/s390/kernel/setup.c ++++ b/arch/s390/kernel/setup.c +@@ -610,8 +610,10 @@ static struct notifier_block kdump_mem_n + static void reserve_memory_end(void) + { + #ifdef CONFIG_CRASH_DUMP +- if (ipl_info.type == IPL_TYPE_FCP_DUMP && +- !OLDMEM_BASE && sclp.hsa_size) { ++ if (OLDMEM_BASE) { ++ memory_end = min(memory_end ?: OLDMEM_SIZE, OLDMEM_SIZE); ++ memory_end_set = 1; ++ } else if (ipl_info.type == IPL_TYPE_FCP_DUMP && sclp.hsa_size) { + memory_end = sclp.hsa_size; + memory_end &= PAGE_MASK; + memory_end_set = 1; diff --git a/patches.suse/smc-disallow-TCP_ULP-in-smc_setsockopt.patch b/patches.suse/smc-disallow-TCP_ULP-in-smc_setsockopt.patch new file mode 100644 index 0000000..f680227 --- /dev/null +++ b/patches.suse/smc-disallow-TCP_ULP-in-smc_setsockopt.patch @@ -0,0 +1,48 @@ +From: Cong Wang +Date: Wed, 5 May 2021 12:40:48 -0700 +Subject: smc: disallow TCP_ULP in smc_setsockopt() +Patch-mainline: v5.13-rc1 +Git-commit: 8621436671f3a4bba5db57482e1ee604708bf1eb +References: bsc#1109837 + +syzbot is able to setup kTLS on an SMC socket which coincidentally +uses sk_user_data too. Later, kTLS treats it as psock so triggers a +refcnt warning. The root cause is that smc_setsockopt() simply calls +TCP setsockopt() which includes TCP_ULP. I do not think it makes +sense to setup kTLS on top of SMC sockets, so we should just disallow +this setup. + +It is hard to find a commit to blame, but we can apply this patch +since the beginning of TCP_ULP. + +Reported-and-tested-by: syzbot+b54a1ce86ba4a623b7f0@syzkaller.appspotmail.com +Fixes: 734942cc4ea6 ("tcp: ULP infrastructure") +Cc: John Fastabend +Signed-off-by: Karsten Graul +Signed-off-by: Cong Wang +Signed-off-by: David S. Miller +Acked-by: Thomas Bogendoerfer +--- + net/smc/af_smc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/net/smc/af_smc.c ++++ b/net/smc/af_smc.c +@@ -1724,6 +1724,9 @@ static int smc_setsockopt(struct socket + struct smc_sock *smc; + int val, rc; + ++ if (level == SOL_TCP && optname == TCP_ULP) ++ return -EOPNOTSUPP; ++ + smc = smc_sk(sk); + + /* generic setsockopts reaching us here always apply to the +@@ -1745,7 +1748,6 @@ static int smc_setsockopt(struct socket + if (rc || smc->use_fallback) + goto out; + switch (optname) { +- case TCP_ULP: + case TCP_FASTOPEN: + case TCP_FASTOPEN_CONNECT: + /* option not supported by SMC */ diff --git a/patches.suse/xsk-Respect-device-s-headroom-and-tailroom-on-generi.patch b/patches.suse/xsk-Respect-device-s-headroom-and-tailroom-on-generi.patch new file mode 100644 index 0000000..9720fb3 --- /dev/null +++ b/patches.suse/xsk-Respect-device-s-headroom-and-tailroom-on-generi.patch @@ -0,0 +1,76 @@ +From: Alexander Lobakin +Date: Thu, 18 Feb 2021 20:50:31 +0000 +Subject: xsk: Respect device's headroom and tailroom on generic xmit path +Patch-mainline: v5.13-rc1 +Git-commit: 3914d88f7608e6c2e80e344474fa289370c32451 +References: bsc#1109837 + +xsk_generic_xmit() allocates a new skb and then queues it for +xmitting. The size of new skb's headroom is desc->len, so it comes +to the driver/device with no reserved headroom and/or tailroom. +Lots of drivers need some headroom (and sometimes tailroom) to +prepend (and/or append) some headers or data, e.g. CPU tags, +device-specific headers/descriptors (LSO, TLS etc.), and if case +of no available space skb_cow_head() will reallocate the skb. +Reallocations are unwanted on fast-path, especially when it comes +to XDP, so generic XSK xmit should reserve the spaces declared in +dev->needed_headroom and dev->needed tailroom to avoid them. + +Note on max(NET_SKB_PAD, L1_CACHE_ALIGN(dev->needed_headroom)): + +Usually, output functions reserve LL_RESERVED_SPACE(dev), which +consists of dev->hard_header_len + dev->needed_headroom, aligned +by 16. + +However, on XSK xmit hard header is already here in the chunk, so +hard_header_len is not needed. But it'd still be better to align +data up to cacheline, while reserving no less than driver requests +for headroom. NET_SKB_PAD here is to double-insure there will be +no reallocations even when the driver advertises no needed_headroom, +but in fact need it (not so rare case). + +Fixes: 35fcde7f8deb ("xsk: support for Tx") +Signed-off-by: Alexander Lobakin +Signed-off-by: Daniel Borkmann +Acked-by: Magnus Karlsson +Acked-by: John Fastabend +Link: https://lore.kernel.org/bpf/20210218204908.5455-5-alobakin@pm.me +Acked-by: Thomas Bogendoerfer +--- + net/xdp/xsk.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/net/xdp/xsk.c ++++ b/net/xdp/xsk.c +@@ -239,12 +239,16 @@ static int xsk_generic_xmit(struct sock + struct xdp_desc desc; + struct sk_buff *skb; + int err = 0; ++ u32 hr, tr; + + mutex_lock(&xs->mutex); + + if (xs->queue_id >= xs->dev->real_num_tx_queues) + goto out; + ++ hr = max(NET_SKB_PAD, L1_CACHE_ALIGN(xs->dev->needed_headroom)); ++ tr = xs->dev->needed_tailroom; ++ + while (xskq_peek_desc(xs->tx, &desc)) { + char *buffer; + u64 addr; +@@ -256,11 +260,13 @@ static int xsk_generic_xmit(struct sock + } + + len = desc.len; +- skb = sock_alloc_send_skb(sk, len, 1, &err); ++ skb = sock_alloc_send_skb(sk, hr + len + tr, 1, &err); + if (unlikely(!skb)) + goto out; + ++ skb_reserve(skb, hr); + skb_put(skb, len); ++ + addr = desc.addr; + buffer = xdp_umem_get_data(xs->umem, addr); + err = skb_store_bits(skb, 0, buffer, len); diff --git a/series.conf b/series.conf index 8a9ed46..0b6ae2a 100644 --- a/series.conf +++ b/series.conf @@ -48404,7 +48404,6 @@ patches.suse/tipc-missing-entries-in-name-table-of-publications.patch patches.suse/net-fou-do-not-use-guehdr-after-iptunnel_pull_offloa.patch patches.suse/net-smc-wait-for-pending-work-before-clcsock-release_sock - patches.suse/net-smc-fix-a-null-pointer-dereference patches.suse/net-smc-propagate-file-from-smc-to-tcp-socket patches.suse/net-smc-fix-return-code-from-flush-command patches.suse/net-smc-move-unhash-before-release-of-clcsock @@ -56919,6 +56918,7 @@ patches.suse/bnxt_en-Don-t-query-FW-when-netif_running-is-false.patch patches.suse/bnxt_en-Check-for-zero-dir-entries-in-NVRAM.patch patches.suse/bnxt_en-fix-HWRM-error-when-querying-VF-temperature.patch + patches.suse/net-hns3-Fix-for-geneve-tx-checksum-bug.patch patches.suse/net-disable-netpoll-on-fresh-napis.patch patches.suse/bnxt-don-t-enable-NAPI-until-rings-are-ready.patch patches.suse/cfg80211-regulatory-reject-invalid-hints.patch @@ -58412,6 +58412,7 @@ patches.suse/net-usb-qmi_wwan-allow-qmimux-add-del-with-master-up.patch patches.suse/ibmvnic-always-store-valid-MAC-address.patch patches.suse/xsk-Remove-dangling-function-declaration-from-header.patch + patches.suse/net-mlx4_en-update-moderation-when-config-reset.patch patches.suse/ibmvnic-remove-excessive-irqsave.patch patches.suse/gianfar-fix-jumbo-packets-napi-rx-overrun-crash.patch patches.suse/ethernet-alx-fix-order-of-calls-on-resume.patch @@ -58433,6 +58434,8 @@ patches.suse/mmc-core-Fix-partition-switch-time-for-eMMC.patch patches.suse/mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch patches.suse/ALSA-hda-Drop-the-BATCH-workaround-for-AMD-controlle.patch + patches.suse/s390-dasd-fix-hanging-dasd-driver-unbind + patches.suse/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind patches.suse/block-rsxx-fix-error-return-code-of-rsxx_pci_probe.patch patches.suse/usb-gadget-f_uac2-always-increase-endpoint-max_packe.patch patches.suse/usbip-fix-stub_dev-to-check-for-stream-socket.patch @@ -58485,9 +58488,13 @@ patches.suse/ext4-find-old-entry-again-if-failed-to-rename-whiteo.patch patches.suse/ext4-fix-potential-error-in-ext4_do_update_inode.patch patches.suse/veth-Store-queue_mapping-independently-of-XDP-prog-p.patch + patches.suse/macvlan-macvlan_count_rx-needs-to-be-aware-of-preemp.patch patches.suse/igc-reinit_locked-should-be-called-with-rtnl_lock.patch patches.suse/igc-Fix-Pause-Frame-Advertising.patch patches.suse/igc-Fix-Supported-Pause-Frame-Link-Setting.patch + patches.suse/e1000e-add-rtnl_lock-to-e1000_reset_task.patch + patches.suse/e1000e-Fix-error-handling-in-e1000_set_d0_lplu_state.patch + patches.suse/net-qlcnic-Fix-a-use-after-free-in-qlcnic_83xx_get_m.patch patches.suse/net-qrtr-fix-a-kernel-infoleak-in-qrtr_recvmsg.patch patches.suse/can-peak_usb-add-forgotten-supported-devices.patch patches.suse/can-c_can_pci-c_can_pci_remove-fix-use-after-free.patch @@ -58502,7 +58509,11 @@ patches.suse/libbpf-Use-SOCK_CLOEXEC-when-opening-the-netlink-soc.patch patches.suse/netfilter-x_tables-use-correct-memory-barriers.patch patches.suse/net-cdc-phonet-fix-data-interface-release-on-probe-f.patch + patches.suse/e1000e-Fix-duplicate-include-guard.patch + patches.suse/igb-Fix-duplicate-include-guard.patch + patches.suse/igb-check-timestamp-validity.patch patches.suse/can-peak_usb-Revert-can-peak_usb-add-forgotten-suppo.patch + patches.suse/net-mlx5e-Fix-error-path-for-ethtool-set-priv-flag.patch patches.suse/drm-msm-fix-shutdown-hook-in-case-GPU-components-fai.patch patches.suse/bus-omap_l3_noc-mark-l3-irqs-as-IRQF_NO_THREAD.patch patches.suse/block-recalculate-segment-count-for-multi-segment-di.patch @@ -58530,12 +58541,15 @@ patches.suse/nfc-fix-memory-leak-in-llcp_sock_connect.patch patches.suse/nfc-Avoid-endless-loops-caused-by-repeated-llcp_sock.patch patches.suse/sch_red-fix-off-by-one-checks-in-red_check_params.patch + patches.suse/i40e-Added-Asym_Pause-to-supported-link-modes.patch patches.suse/i40e-Fix-kernel-oops-when-i40e-driver-removes-VF-s.patch patches.suse/gianfar-Handle-error-code-at-MAC-address-change.patch patches.suse/cxgb4-avoid-collecting-SGE_QBASE-regs-during-traffic.patch patches.suse/ice-Fix-for-dereference-of-NULL-pointer.patch patches.suse/ice-Cleanup-fltr-list-in-case-of-allocation-issues.patch patches.suse/xdp-fix-xdp_return_frame-kernel-BUG-throw-for-page_p.patch + patches.suse/drivers-net-fix-memory-leak-in-atusb_probe.patch + patches.suse/drivers-net-fix-memory-leak-in-peak_usb_create_dev.patch patches.suse/i40e-Fix-display-statistics-for-veb_tc.patch patches.suse/pcnet32-Use-pci_resource_len-to-validate-PCI-resourc.patch patches.suse/net-hns3-clear-VF-down-state-bit-before-request-link.patch @@ -58544,6 +58558,7 @@ patches.suse/mac80211-clear-sta-fast_rx-when-STA-removed-from-4-a.patch patches.suse/cfg80211-remove-WARN_ON-in-cfg80211_sme_connect.patch patches.suse/bpf-x86-Validate-computation-of-branch-displacements.patch + patches.suse/i40e-Fix-sparse-errors-in-i40e_txrx.c.patch patches.suse/i40e-Fix-sparse-warning-missing-error-code-err.patch patches.suse/ocfs2-fix-deadlock-between-setattr-and-dio_end_io_wr.patch patches.suse/fs-direct-io-fix-missing-sdio-boundary.patch @@ -58563,6 +58578,7 @@ patches.suse/ibmvnic-avoid-calling-napi_disable-twice.patch patches.suse/ibmvnic-remove-duplicate-napi_schedule-call-in-do_re.patch patches.suse/ibmvnic-remove-duplicate-napi_schedule-call-in-open-.patch + patches.suse/i40e-fix-the-panic-when-running-bpf-in-xdpdrv-mode.patch patches.suse/bpf-Move-off_reg-into-sanitize_ptr_alu.patch patches.suse/bpf-Ensure-off_reg-has-no-mixed-signed-bounds-for-al.patch patches.suse/bpf-Rework-ptr_limit-into-alu_limit-and-add-common-e.patch @@ -58703,8 +58719,13 @@ patches.suse/scsi-lpfc-Copyright-updates-for-12.8.0.9-patches.patch patches.suse/scsi-ibmvfc-Fix-invalid-state-machine-BUG_ON.patch patches.suse/scsi-qla2xxx-Reserve-extra-IRQ-vectors.patch + patches.suse/netdevice-Add-missing-IFF_PHONY_HEADROOM-self-defini.patch + patches.suse/xsk-Respect-device-s-headroom-and-tailroom-on-generi.patch patches.suse/nfc-pn533-prevent-potential-memory-corruption.patch patches.suse/ibmvnic-Use-skb_frag_address-instead-of-hand-coding-.patch + patches.suse/liquidio-Fix-unintented-sign-extension-of-a-left-shi.patch + patches.suse/cxgb4-Fix-unintentional-sign-extension-issues.patch + patches.suse/net-thunderx-Fix-unintentional-sign-extension-issue.patch patches.suse/ibmvnic-clean-up-the-remaining-debugfs-data-structur.patch patches.suse/ibmvnic-print-reset-reason-as-a-string.patch patches.suse/ibmvnic-print-adapter-state-as-a-string.patch @@ -58715,6 +58736,8 @@ patches.suse/ipw2x00-potential-buffer-overflow-in-libipw_wx_set_e.patch patches.suse/mac80211-bail-out-if-cipher-schemes-are-invalid.patch patches.suse/ath9k-Fix-error-check-in-ath9k_hw_read_revisions-for.patch + patches.suse/net-xdp-Update-pkt_type-if-generic-XDP-changes-unica.patch + patches.suse/bnxt_en-fix-ternary-sign-extension-bug-in-bnxt_show_.patch patches.suse/powerpc-fadump-Mark-fadump_calculate_reserve_size-as.patch patches.suse/powerpc-prom-Mark-identical_pvr_fixup-as-__init.patch patches.suse/powerpc-asm-offsets-GPR14-is-not-needed-either.patch @@ -58732,6 +58755,8 @@ patches.suse/i2c-emev2-add-IRQ-check.patch patches.suse/i2c-jz4780-add-IRQ-check.patch patches.suse/pinctrl-core-Fix-kernel-doc-string-for-pin_get_name.patch + patches.suse/RDMA-hns-Delete-redundant-condition-judgment-related.patch + patches.suse/RDMA-srpt-Fix-error-return-code-in-srpt_cm_req_recv.patch patches.suse/KVM-s390-fix-guarded-storage-control-register-handli.patch patches.suse/kvm-destroy-i-o-bus-devices-on-unregister-failure-after_-sync-ing-srcu patches.suse/kvm-stop-looking-for-coalesced-mmio-zones-if-the-bus-is-destroyed @@ -58743,10 +58768,27 @@ patches.suse/thermal-drivers-ti-soc-thermal-bandgap-Remove-unused.patch patches.suse/PCI-Release-OF-node-in-pci_scan_device-s-error-path.patch patches.suse/ftrace-handle-commands-when-closing-set_ftrace_filter-file.patch + patches.suse/net-hns3-fix-incorrect-configuration-for-igu_egu_hw_.patch + patches.suse/net-hns3-initialize-the-message-content-in-hclge_get.patch + patches.suse/net-hns3-add-check-for-HNS3_NIC_STATE_INITED-in-hns3.patch + patches.suse/net-hns3-fix-for-vxlan-gpe-tx-checksum-bug.patch + patches.suse/net-hns3-use-netif_tx_disable-to-stop-the-transmit-q.patch + patches.suse/net-hns3-disable-phy-loopback-setting-in-hclge_mac_s.patch + patches.suse/ethernet-enic-Fix-a-use-after-free-bug-in-enic_hard_.patch patches.suse/bpf-Fix-masking-negation-logic-upon-negative-dst-reg.patch + patches.suse/smc-disallow-TCP_ULP-in-smc_setsockopt.patch + patches.suse/mlxsw-spectrum_mr-Update-egress-RIF-list-before-rout.patch + patches.suse/i40e-fix-broken-XDP-support.patch + patches.suse/i40e-Fix-use-after-free-in-i40e_client_subtask.patch + patches.suse/i40e-fix-the-restart-auto-negotiation-after-FEC-modi.patch + patches.suse/i40e-Fix-PHY-type-identifiers-for-2.5G-and-5G-adapte.patch patches.suse/scsi-lpfc-Fix-illegal-memory-access-on-Abort-IOCBs.patch patches.suse/scsi-lpfc-Fix-DMA-virtual-address-ptr-assignment-in-.patch patches.suse/scsi-qla2xxx-Prevent-PRLI-in-target-mode.patch + patches.suse/powerpc-64s-Fix-crashes-when-toggling-stf-barrier.patch + + # netdev/net-next + patches.suse/ibmvnic-remove-default-label-from-to_string-switch.patch # dhowells/linux-fs keys-uefi patches.suse/0001-KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch @@ -58917,6 +58959,8 @@ patches.suse/s390-sles15sp1-kmsg-update-2019-03-08.patch patches.kabi/s390-cio-fix-virtio-ccw-dma-without-pv + patches.suse/s390-sles12sp5-kdump-fix-out-of-memory-with-PCI.patch + patches.kabi/s390-kabi-workaround-for-lowcore-vmap_stack.patch patches.kabi/s390-kabi-for-stack-unwind-api.patch patches.kabi/s390-kabi-workaround-ftrace_ret_stack.patch @@ -59009,6 +59053,9 @@ patches.suse/intel_rapl-add-support-for-IceLake-desktop.patch patches.suse/powercap-intel-rapl-add-support-for-ICX.patch + # bsc#1185758 + patches.suse/cpufreq-intel_pstate-Add-Icelake-servers-support-in-.patch + ######################################################## # powerpc/generic ######################################################## @@ -59029,6 +59076,7 @@ patches.suse/powerpc-Fix-__clear_user-with-KUAP-enabled.patch patches.suse/powerpc-uaccess-Evaluate-macro-arguments-once-before.patch patches.suse/powerpc-64s-flush-L1D-after-user-accesses.patch + patches.suse/powerpc-64s-Fix-crashes-when-toggling-entry-flush-ba.patch ######################################################## # cephfs @@ -59666,7 +59714,6 @@ patches.suse/pagecache-limit-fix-wrong-reclaimed-count.patch patches.suse/pagecache-limit-tracepoints.patch patches.suse/0001-mm-pagechage-limit-Calculate-pagecache-limit-based-o.patch - ######################################################## # Patches cherry-picked from SLE12 codestream, for which # the upstream status couldn't be automatically determined @@ -59770,6 +59817,7 @@ patches.suse/v2-0004-xen-netback-fix-spurious-event-detection-for-comm.patch patches.suse/NFSv4-Replace-closed-stateids-with-the-invalid-speci.patch + patches.suse/ACPICA-Enable-sleep-button-on-ACPI-legacy-wake.patch ######################################################## # RTE: Do not add non-rt patches below here. @@ -60407,4 +60455,4 @@ patches.rt/x86-kdump-Fix-efi-noruntime-NULL-pointer-dereference.patch # bnc#1135344 - patches.rt/kernel-padata.c-Make-RT-aware.patch + patches.rt/kernel-padata.c-Make-RT-aware.patch \ No newline at end of file