From: Sasha Levin Date: Mon, 6 Sep 2021 01:10:40 +0000 (-0400) Subject: Fixes for 4.9 X-Git-Tag: v5.10.63~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04d956b7136188ac5b5325e10404cec500a36fde;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.9 Signed-off-by: Sasha Levin --- diff --git a/queue-4.9/cryptoloop-add-a-deprecation-warning.patch b/queue-4.9/cryptoloop-add-a-deprecation-warning.patch new file mode 100644 index 00000000000..14e16f1832b --- /dev/null +++ b/queue-4.9/cryptoloop-add-a-deprecation-warning.patch @@ -0,0 +1,62 @@ +From 2193578ff5d7ed86edd28666b7de94c6ef5b6004 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 27 Aug 2021 18:32:50 +0200 +Subject: cryptoloop: add a deprecation warning + +From: Christoph Hellwig + +[ Upstream commit 222013f9ac30b9cec44301daa8dbd0aae38abffb ] + +Support for cryptoloop has been officially marked broken and deprecated +in favor of dm-crypt (which supports the same broken algorithms if +needed) in Linux 2.6.4 (released in March 2004), and support for it has +been entirely removed from losetup in util-linux 2.23 (released in April +2013). Add a warning and a deprecation schedule. + +Signed-off-by: Christoph Hellwig +Link: https://lore.kernel.org/r/20210827163250.255325-1-hch@lst.de +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + drivers/block/Kconfig | 4 ++-- + drivers/block/cryptoloop.c | 2 ++ + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig +index 894102fd5a06..b701c79f07e5 100644 +--- a/drivers/block/Kconfig ++++ b/drivers/block/Kconfig +@@ -257,7 +257,7 @@ config BLK_DEV_LOOP_MIN_COUNT + dynamically allocated with the /dev/loop-control interface. + + config BLK_DEV_CRYPTOLOOP +- tristate "Cryptoloop Support" ++ tristate "Cryptoloop Support (DEPRECATED)" + select CRYPTO + select CRYPTO_CBC + depends on BLK_DEV_LOOP +@@ -269,7 +269,7 @@ config BLK_DEV_CRYPTOLOOP + WARNING: This device is not safe for journaled file systems like + ext3 or Reiserfs. Please use the Device Mapper crypto module + instead, which can be configured to be on-disk compatible with the +- cryptoloop device. ++ cryptoloop device. cryptoloop support will be removed in Linux 5.16. + + source "drivers/block/drbd/Kconfig" + +diff --git a/drivers/block/cryptoloop.c b/drivers/block/cryptoloop.c +index 3d31761c0ed0..adbfd3e2a60f 100644 +--- a/drivers/block/cryptoloop.c ++++ b/drivers/block/cryptoloop.c +@@ -203,6 +203,8 @@ init_cryptoloop(void) + + if (rc) + printk(KERN_ERR "cryptoloop: loop_register_transfer failed\n"); ++ else ++ pr_warn("the cryptoloop driver has been deprecated and will be removed in in Linux 5.16\n"); + return rc; + } + +-- +2.30.2 + diff --git a/queue-4.9/perf-x86-amd-ibs-work-around-erratum-1197.patch b/queue-4.9/perf-x86-amd-ibs-work-around-erratum-1197.patch new file mode 100644 index 00000000000..a43811946ad --- /dev/null +++ b/queue-4.9/perf-x86-amd-ibs-work-around-erratum-1197.patch @@ -0,0 +1,64 @@ +From 64638be762ba91001311f610fc63eb8c556bfd7c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 17 Aug 2021 17:10:42 -0500 +Subject: perf/x86/amd/ibs: Work around erratum #1197 + +From: Kim Phillips + +[ Upstream commit 26db2e0c51fe83e1dd852c1321407835b481806e ] + +Erratum #1197 "IBS (Instruction Based Sampling) Register State May be +Incorrect After Restore From CC6" is published in a document: + + "Revision Guide for AMD Family 19h Models 00h-0Fh Processors" 56683 Rev. 1.04 July 2021 + + https://bugzilla.kernel.org/show_bug.cgi?id=206537 + +Implement the erratum's suggested workaround and ignore IBS samples if +MSRC001_1031 == 0. + +Signed-off-by: Kim Phillips +Signed-off-by: Peter Zijlstra (Intel) +Signed-off-by: Ingo Molnar +Link: https://lore.kernel.org/r/20210817221048.88063-3-kim.phillips@amd.com +Signed-off-by: Sasha Levin +--- + arch/x86/events/amd/ibs.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c +index f6e57bebbc6b..5c6aad14cdd9 100644 +--- a/arch/x86/events/amd/ibs.c ++++ b/arch/x86/events/amd/ibs.c +@@ -89,6 +89,7 @@ struct perf_ibs { + unsigned long offset_mask[1]; + int offset_max; + unsigned int fetch_count_reset_broken : 1; ++ unsigned int fetch_ignore_if_zero_rip : 1; + struct cpu_perf_ibs __percpu *pcpu; + + struct attribute **format_attrs; +@@ -673,6 +674,10 @@ fail: + if (check_rip && (ibs_data.regs[2] & IBS_RIP_INVALID)) { + regs.flags &= ~PERF_EFLAGS_EXACT; + } else { ++ /* Workaround for erratum #1197 */ ++ if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1])) ++ goto out; ++ + set_linear_ip(®s, ibs_data.regs[1]); + regs.flags |= PERF_EFLAGS_EXACT; + } +@@ -766,6 +771,9 @@ static __init void perf_event_ibs_init(void) + if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18) + perf_ibs_fetch.fetch_count_reset_broken = 1; + ++ if (boot_cpu_data.x86 == 0x19 && boot_cpu_data.x86_model < 0x10) ++ perf_ibs_fetch.fetch_ignore_if_zero_rip = 1; ++ + perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch"); + + if (ibs_caps & IBS_CAPS_OPCNT) { +-- +2.30.2 + diff --git a/queue-4.9/qed-fix-the-vf-msix-vectors-flow.patch b/queue-4.9/qed-fix-the-vf-msix-vectors-flow.patch new file mode 100644 index 00000000000..0abeb166627 --- /dev/null +++ b/queue-4.9/qed-fix-the-vf-msix-vectors-flow.patch @@ -0,0 +1,43 @@ +From 45ded75b0d895b4bd8392cfc21ab50f7d4663baf Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 22 Aug 2021 22:21:14 +0300 +Subject: qed: Fix the VF msix vectors flow + +From: Shai Malin + +[ Upstream commit b0cd08537db8d2fbb227cdb2e5835209db295a24 ] + +For VFs we should return with an error in case we didn't get the exact +number of msix vectors as we requested. +Not doing that will lead to a crash when starting queues for this VF. + +Signed-off-by: Prabhakar Kushwaha +Signed-off-by: Ariel Elior +Signed-off-by: Shai Malin +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/qlogic/qed/qed_main.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c +index 708117fc6f73..7669d36151c6 100644 +--- a/drivers/net/ethernet/qlogic/qed/qed_main.c ++++ b/drivers/net/ethernet/qlogic/qed/qed_main.c +@@ -374,7 +374,12 @@ static int qed_enable_msix(struct qed_dev *cdev, + rc = cnt; + } + +- if (rc > 0) { ++ /* For VFs, we should return with an error in case we didn't get the ++ * exact number of msix vectors as we requested. ++ * Not doing that will lead to a crash when starting queues for ++ * this VF. ++ */ ++ if ((IS_PF(cdev) && rc > 0) || (IS_VF(cdev) && rc == cnt)) { + /* MSI-x configuration was achieved */ + int_params->out.int_mode = QED_INT_MODE_MSIX; + int_params->out.num_vectors = rc; +-- +2.30.2 + diff --git a/queue-4.9/qede-fix-memset-corruption.patch b/queue-4.9/qede-fix-memset-corruption.patch new file mode 100644 index 00000000000..7cd049e77a4 --- /dev/null +++ b/queue-4.9/qede-fix-memset-corruption.patch @@ -0,0 +1,48 @@ +From 8fa877c9d4d3aa6fb4c96ae3dd39aa50999da292 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 24 Aug 2021 19:52:49 +0300 +Subject: qede: Fix memset corruption + +From: Shai Malin + +[ Upstream commit e543468869e2532f5d7926e8f417782b48eca3dc ] + +Thanks to Kees Cook who detected the problem of memset that starting +from not the first member, but sized for the whole struct. +The better change will be to remove the redundant memset and to clear +only the msix_cnt member. + +Signed-off-by: Prabhakar Kushwaha +Signed-off-by: Ariel Elior +Signed-off-by: Shai Malin +Reported-by: Kees Cook +Reviewed-by: Kees Cook +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/qlogic/qede/qede_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c +index 9b1920b58594..d21a73bc4cde 100644 +--- a/drivers/net/ethernet/qlogic/qede/qede_main.c ++++ b/drivers/net/ethernet/qlogic/qede/qede_main.c +@@ -3145,6 +3145,7 @@ static void qede_sync_free_irqs(struct qede_dev *edev) + } + + edev->int_info.used_cnt = 0; ++ edev->int_info.msix_cnt = 0; + } + + static int qede_req_msix_irqs(struct qede_dev *edev) +@@ -3644,7 +3645,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode) + + err4: + qede_sync_free_irqs(edev); +- memset(&edev->int_info.msix_cnt, 0, sizeof(struct qed_int_info)); + err3: + qede_napi_disable_remove(edev); + err2: +-- +2.30.2 + diff --git a/queue-4.9/series b/queue-4.9/series index b1aeeea0af7..65c75ec5895 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -1,2 +1,6 @@ ext4-fix-race-writing-to-an-inline_data-file-while-its-xattrs-are-changing.patch mtd-nand-atmel_nand-remove-build-warning-in.patch +qed-fix-the-vf-msix-vectors-flow.patch +qede-fix-memset-corruption.patch +perf-x86-amd-ibs-work-around-erratum-1197.patch +cryptoloop-add-a-deprecation-warning.patch