From: Sasha Levin Date: Sat, 9 Dec 2023 06:02:29 +0000 (-0500) Subject: Fixes for 4.19 X-Git-Tag: v6.6.6~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fbeab54cef8afc1a2d1e8d5b89b8ff63f995c803;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/arm-dts-imx-make-gpt-node-name-generic.patch b/queue-4.19/arm-dts-imx-make-gpt-node-name-generic.patch new file mode 100644 index 00000000000..f2fb643ef9f --- /dev/null +++ b/queue-4.19/arm-dts-imx-make-gpt-node-name-generic.patch @@ -0,0 +1,127 @@ +From 0d3e954cd9b2b6531e05f25896fa4a52185cb44e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 13 Feb 2020 10:52:56 +0800 +Subject: ARM: dts: imx: make gpt node name generic + +From: Anson Huang + +[ Upstream commit 7c48b086965873c0aa93d99773cf64c033b76b2f ] + +Node name should be generic, use "timer" instead of "gpt" for gpt node. + +Signed-off-by: Anson Huang +Signed-off-by: Shawn Guo +Stable-dep-of: 397caf68e2d3 ("ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt") +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/imx6qdl.dtsi | 2 +- + arch/arm/boot/dts/imx6sl.dtsi | 2 +- + arch/arm/boot/dts/imx6sx.dtsi | 2 +- + arch/arm/boot/dts/imx6ul.dtsi | 4 ++-- + arch/arm/boot/dts/imx7s.dtsi | 8 ++++---- + 5 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi +index fcd7e4dc949a1..b6aac90d12337 100644 +--- a/arch/arm/boot/dts/imx6qdl.dtsi ++++ b/arch/arm/boot/dts/imx6qdl.dtsi +@@ -565,7 +565,7 @@ + status = "disabled"; + }; + +- gpt: gpt@2098000 { ++ gpt: timer@2098000 { + compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt"; + reg = <0x02098000 0x4000>; + interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>; +diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi +index b00f791471c66..e9f6cffc7eee7 100644 +--- a/arch/arm/boot/dts/imx6sl.dtsi ++++ b/arch/arm/boot/dts/imx6sl.dtsi +@@ -374,7 +374,7 @@ + clock-names = "ipg", "per"; + }; + +- gpt: gpt@2098000 { ++ gpt: timer@2098000 { + compatible = "fsl,imx6sl-gpt"; + reg = <0x02098000 0x4000>; + interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>; +diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi +index a0c0e631ebbe6..4cabcf32af06e 100644 +--- a/arch/arm/boot/dts/imx6sx.dtsi ++++ b/arch/arm/boot/dts/imx6sx.dtsi +@@ -468,7 +468,7 @@ + status = "disabled"; + }; + +- gpt: gpt@2098000 { ++ gpt: timer@2098000 { + compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt"; + reg = <0x02098000 0x4000>; + interrupts = ; +diff --git a/arch/arm/boot/dts/imx6ul.dtsi b/arch/arm/boot/dts/imx6ul.dtsi +index dcb187995f760..7c3d8acf87bec 100644 +--- a/arch/arm/boot/dts/imx6ul.dtsi ++++ b/arch/arm/boot/dts/imx6ul.dtsi +@@ -423,7 +423,7 @@ + status = "disabled"; + }; + +- gpt1: gpt@2098000 { ++ gpt1: timer@2098000 { + compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt"; + reg = <0x02098000 0x4000>; + interrupts = ; +@@ -696,7 +696,7 @@ + reg = <0x020e4000 0x4000>; + }; + +- gpt2: gpt@20e8000 { ++ gpt2: timer@20e8000 { + compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt"; + reg = <0x020e8000 0x4000>; + interrupts = ; +diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi +index 8a6d698e253d2..7cd05ab0b71ff 100644 +--- a/arch/arm/boot/dts/imx7s.dtsi ++++ b/arch/arm/boot/dts/imx7s.dtsi +@@ -439,7 +439,7 @@ + fsl,input-sel = <&iomuxc>; + }; + +- gpt1: gpt@302d0000 { ++ gpt1: timer@302d0000 { + compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; + reg = <0x302d0000 0x10000>; + interrupts = ; +@@ -448,7 +448,7 @@ + clock-names = "ipg", "per"; + }; + +- gpt2: gpt@302e0000 { ++ gpt2: timer@302e0000 { + compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; + reg = <0x302e0000 0x10000>; + interrupts = ; +@@ -458,7 +458,7 @@ + status = "disabled"; + }; + +- gpt3: gpt@302f0000 { ++ gpt3: timer@302f0000 { + compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; + reg = <0x302f0000 0x10000>; + interrupts = ; +@@ -468,7 +468,7 @@ + status = "disabled"; + }; + +- gpt4: gpt@30300000 { ++ gpt4: timer@30300000 { + compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; + reg = <0x30300000 0x10000>; + interrupts = ; +-- +2.42.0 + diff --git a/queue-4.19/arm-dts-imx7-declare-timers-compatible-with-fsl-imx6.patch b/queue-4.19/arm-dts-imx7-declare-timers-compatible-with-fsl-imx6.patch new file mode 100644 index 00000000000..12e252e4aae --- /dev/null +++ b/queue-4.19/arm-dts-imx7-declare-timers-compatible-with-fsl-imx6.patch @@ -0,0 +1,65 @@ +From bbc56a89724f9264913cbf21a72359bd3f117a9c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 27 Nov 2023 17:05:01 +0100 +Subject: ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt + +From: Philipp Zabel + +[ Upstream commit 397caf68e2d36532054cb14ae8995537f27f8b61 ] + +The timer nodes declare compatibility with "fsl,imx6sx-gpt", which +itself is compatible with "fsl,imx6dl-gpt". Switch the fallback +compatible from "fsl,imx6sx-gpt" to "fsl,imx6dl-gpt". + +Fixes: 949673450291 ("ARM: dts: add imx7d soc dtsi file") +Signed-off-by: Philipp Zabel +Signed-off-by: Roland Hieber +Signed-off-by: Shawn Guo +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/imx7s.dtsi | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi +index 7cd05ab0b71ff..36c00fe29f4f8 100644 +--- a/arch/arm/boot/dts/imx7s.dtsi ++++ b/arch/arm/boot/dts/imx7s.dtsi +@@ -440,7 +440,7 @@ + }; + + gpt1: timer@302d0000 { +- compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; ++ compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt"; + reg = <0x302d0000 0x10000>; + interrupts = ; + clocks = <&clks IMX7D_GPT1_ROOT_CLK>, +@@ -449,7 +449,7 @@ + }; + + gpt2: timer@302e0000 { +- compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; ++ compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt"; + reg = <0x302e0000 0x10000>; + interrupts = ; + clocks = <&clks IMX7D_GPT2_ROOT_CLK>, +@@ -459,7 +459,7 @@ + }; + + gpt3: timer@302f0000 { +- compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; ++ compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt"; + reg = <0x302f0000 0x10000>; + interrupts = ; + clocks = <&clks IMX7D_GPT3_ROOT_CLK>, +@@ -469,7 +469,7 @@ + }; + + gpt4: timer@30300000 { +- compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; ++ compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt"; + reg = <0x30300000 0x10000>; + interrupts = ; + clocks = <&clks IMX7D_GPT4_ROOT_CLK>, +-- +2.42.0 + diff --git a/queue-4.19/arm-imx-check-return-value-of-devm_kasprintf-in-imx_.patch b/queue-4.19/arm-imx-check-return-value-of-devm_kasprintf-in-imx_.patch new file mode 100644 index 00000000000..075bc8d71e8 --- /dev/null +++ b/queue-4.19/arm-imx-check-return-value-of-devm_kasprintf-in-imx_.patch @@ -0,0 +1,55 @@ +From 4810b9a6ec4cd548169c4a9318801ed45b22f804 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 22 Nov 2023 14:46:36 +0800 +Subject: ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init + +From: Kunwu Chan + +[ Upstream commit 1c2b1049af3f86545fcc5fae0fc725fb64b3a09e ] + +devm_kasprintf() returns a pointer to dynamically allocated memory +which can be NULL upon failure. Ensure the allocation was successful +by checking the pointer validity. + +Release the id allocated in 'mmdc_pmu_init' when 'devm_kasprintf' +return NULL + +Suggested-by: Ahmad Fatoum +Fixes: e76bdfd7403a ("ARM: imx: Added perf functionality to mmdc driver") +Signed-off-by: Kunwu Chan +Signed-off-by: Shawn Guo +Signed-off-by: Sasha Levin +--- + arch/arm/mach-imx/mmdc.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c +index 965a41572283e..67cf02c2f2ec2 100644 +--- a/arch/arm/mach-imx/mmdc.c ++++ b/arch/arm/mach-imx/mmdc.c +@@ -513,6 +513,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b + + name = devm_kasprintf(&pdev->dev, + GFP_KERNEL, "mmdc%d", ret); ++ if (!name) { ++ ret = -ENOMEM; ++ goto pmu_release_id; ++ } + + pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk; + pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data; +@@ -535,9 +539,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b + + pmu_register_err: + pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret); +- ida_simple_remove(&mmdc_ida, pmu_mmdc->id); + cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node); + hrtimer_cancel(&pmu_mmdc->hrtimer); ++pmu_release_id: ++ ida_simple_remove(&mmdc_ida, pmu_mmdc->id); + pmu_free: + kfree(pmu_mmdc); + return ret; +-- +2.42.0 + diff --git a/queue-4.19/hwmon-acpi_power_meter-fix-4.29-mw-bug.patch b/queue-4.19/hwmon-acpi_power_meter-fix-4.29-mw-bug.patch new file mode 100644 index 00000000000..1eab44da767 --- /dev/null +++ b/queue-4.19/hwmon-acpi_power_meter-fix-4.29-mw-bug.patch @@ -0,0 +1,55 @@ +From ab26fb5f365ab2870d6598dbfb1253a0ab507bff Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 24 Nov 2023 19:27:47 +0100 +Subject: hwmon: (acpi_power_meter) Fix 4.29 MW bug + +From: Armin Wolf + +[ Upstream commit 1fefca6c57fb928d2131ff365270cbf863d89c88 ] + +The ACPI specification says: + +"If an error occurs while obtaining the meter reading or if the value +is not available then an Integer with all bits set is returned" + +Since the "integer" is 32 bits in case of the ACPI power meter, +userspace will get a power reading of 2^32 * 1000 miliwatts (~4.29 MW) +in case of such an error. This was discovered due to a lm_sensors +bugreport (https://github.com/lm-sensors/lm-sensors/issues/460). +Fix this by returning -ENODATA instead. + +Tested-by: +Fixes: de584afa5e18 ("hwmon driver for ACPI 4.0 power meters") +Signed-off-by: Armin Wolf +Link: https://lore.kernel.org/r/20231124182747.13956-1-W_Armin@gmx.de +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + drivers/hwmon/acpi_power_meter.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c +index 2f40da04a9445..b1e5ad59ec718 100644 +--- a/drivers/hwmon/acpi_power_meter.c ++++ b/drivers/hwmon/acpi_power_meter.c +@@ -45,6 +45,7 @@ ACPI_MODULE_NAME(ACPI_POWER_METER_NAME); + #define POWER_METER_CAN_NOTIFY (1 << 3) + #define POWER_METER_IS_BATTERY (1 << 8) + #define UNKNOWN_HYSTERESIS 0xFFFFFFFF ++#define UNKNOWN_POWER 0xFFFFFFFF + + #define METER_NOTIFY_CONFIG 0x80 + #define METER_NOTIFY_TRIP 0x81 +@@ -356,6 +357,9 @@ static ssize_t show_power(struct device *dev, + update_meter(resource); + mutex_unlock(&resource->lock); + ++ if (resource->power == UNKNOWN_POWER) ++ return -ENODATA; ++ + return sprintf(buf, "%llu\n", resource->power * 1000); + } + +-- +2.42.0 + diff --git a/queue-4.19/rdma-bnxt_re-correct-module-description-string.patch b/queue-4.19/rdma-bnxt_re-correct-module-description-string.patch new file mode 100644 index 00000000000..c8f0b919df4 --- /dev/null +++ b/queue-4.19/rdma-bnxt_re-correct-module-description-string.patch @@ -0,0 +1,38 @@ +From 85bf7357d6c3e1adbc95ea2f1267dacd33fe7802 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 21 Nov 2023 00:29:47 -0800 +Subject: RDMA/bnxt_re: Correct module description string + +From: Kalesh AP + +[ Upstream commit 422b19f7f006e813ee0865aadce6a62b3c263c42 ] + +The word "Driver" is repeated twice in the "modinfo bnxt_re" +output description. Fix it. + +Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver") +Signed-off-by: Kalesh AP +Signed-off-by: Selvin Xavier +Link: https://lore.kernel.org/r/1700555387-6277-1-git-send-email-selvin.xavier@broadcom.com +Signed-off-by: Leon Romanovsky +Signed-off-by: Sasha Levin +--- + drivers/infiniband/hw/bnxt_re/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c +index f1b666c80f368..b34e221507f5c 100644 +--- a/drivers/infiniband/hw/bnxt_re/main.c ++++ b/drivers/infiniband/hw/bnxt_re/main.c +@@ -70,7 +70,7 @@ static char version[] = + BNXT_RE_DESC " v" ROCE_DRV_MODULE_VERSION "\n"; + + MODULE_AUTHOR("Eddie Wai "); +-MODULE_DESCRIPTION(BNXT_RE_DESC " Driver"); ++MODULE_DESCRIPTION(BNXT_RE_DESC); + MODULE_LICENSE("Dual BSD/GPL"); + + /* globals */ +-- +2.42.0 + diff --git a/queue-4.19/scsi-be2iscsi-fix-a-memleak-in-beiscsi_init_wrb_hand.patch b/queue-4.19/scsi-be2iscsi-fix-a-memleak-in-beiscsi_init_wrb_hand.patch new file mode 100644 index 00000000000..d0b64a74562 --- /dev/null +++ b/queue-4.19/scsi-be2iscsi-fix-a-memleak-in-beiscsi_init_wrb_hand.patch @@ -0,0 +1,38 @@ +From 17725bc3bbfdacad30d53ada2d191319daf6576c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 23 Nov 2023 16:19:41 +0800 +Subject: scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle() + +From: Dinghao Liu + +[ Upstream commit 235f2b548d7f4ac5931d834f05d3f7f5166a2e72 ] + +When an error occurs in the for loop of beiscsi_init_wrb_handle(), we +should free phwi_ctxt->be_wrbq before returning an error code to prevent +potential memleak. + +Fixes: a7909b396ba7 ("[SCSI] be2iscsi: Fix dynamic CID allocation Mechanism in driver") +Signed-off-by: Dinghao Liu +Link: https://lore.kernel.org/r/20231123081941.24854-1-dinghao.liu@zju.edu.cn +Reviewed-by: Mike Christie +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/be2iscsi/be_main.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c +index 50e9b4b683574..295eef40e275c 100644 +--- a/drivers/scsi/be2iscsi/be_main.c ++++ b/drivers/scsi/be2iscsi/be_main.c +@@ -2713,6 +2713,7 @@ static int beiscsi_init_wrb_handle(struct beiscsi_hba *phba) + kfree(pwrb_context->pwrb_handle_base); + kfree(pwrb_context->pwrb_handle_basestd); + } ++ kfree(phwi_ctxt->be_wrbq); + return -ENOMEM; + } + +-- +2.42.0 + diff --git a/queue-4.19/series b/queue-4.19/series index 49336a55c7c..697c5a1fd16 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -21,3 +21,10 @@ net-hns-fix-fake-link-up-on-xge-port.patch netfilter-xt_owner-add-supplementary-groups-option.patch netfilter-xt_owner-fix-for-unsafe-access-of-sk-sk_so.patch tcp-do-not-accept-ack-of-bytes-we-never-sent.patch +rdma-bnxt_re-correct-module-description-string.patch +hwmon-acpi_power_meter-fix-4.29-mw-bug.patch +tracing-fix-a-warning-when-allocating-buffered-event.patch +scsi-be2iscsi-fix-a-memleak-in-beiscsi_init_wrb_hand.patch +arm-imx-check-return-value-of-devm_kasprintf-in-imx_.patch +arm-dts-imx-make-gpt-node-name-generic.patch +arm-dts-imx7-declare-timers-compatible-with-fsl-imx6.patch diff --git a/queue-4.19/tracing-fix-a-warning-when-allocating-buffered-event.patch b/queue-4.19/tracing-fix-a-warning-when-allocating-buffered-event.patch new file mode 100644 index 00000000000..4a7eecf6962 --- /dev/null +++ b/queue-4.19/tracing-fix-a-warning-when-allocating-buffered-event.patch @@ -0,0 +1,83 @@ +From d287e3ebeea6325f8ee8439f5205fa6e31ef33f0 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 5 Dec 2023 17:17:35 +0100 +Subject: tracing: Fix a warning when allocating buffered events fails + +From: Petr Pavlu + +[ Upstream commit 34209fe83ef8404353f91ab4ea4035dbc9922d04 ] + +Function trace_buffered_event_disable() produces an unexpected warning +when the previous call to trace_buffered_event_enable() fails to +allocate pages for buffered events. + +The situation can occur as follows: + +* The counter trace_buffered_event_ref is at 0. + +* The soft mode gets enabled for some event and + trace_buffered_event_enable() is called. The function increments + trace_buffered_event_ref to 1 and starts allocating event pages. + +* The allocation fails for some page and trace_buffered_event_disable() + is called for cleanup. + +* Function trace_buffered_event_disable() decrements + trace_buffered_event_ref back to 0, recognizes that it was the last + use of buffered events and frees all allocated pages. + +* The control goes back to trace_buffered_event_enable() which returns. + The caller of trace_buffered_event_enable() has no information that + the function actually failed. + +* Some time later, the soft mode is disabled for the same event. + Function trace_buffered_event_disable() is called. It warns on + "WARN_ON_ONCE(!trace_buffered_event_ref)" and returns. + +Buffered events are just an optimization and can handle failures. Make +trace_buffered_event_enable() exit on the first failure and left any +cleanup later to when trace_buffered_event_disable() is called. + +Link: https://lore.kernel.org/all/20231127151248.7232-2-petr.pavlu@suse.com/ +Link: https://lkml.kernel.org/r/20231205161736.19663-3-petr.pavlu@suse.com + +Fixes: 0fc1b09ff1ff ("tracing: Use temp buffer when filtering events") +Signed-off-by: Petr Pavlu +Signed-off-by: Steven Rostedt (Google) +Signed-off-by: Sasha Levin +--- + kernel/trace/trace.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index f44c8f1fd3ec5..a6d84349bcc48 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -2209,8 +2209,11 @@ void trace_buffered_event_enable(void) + for_each_tracing_cpu(cpu) { + page = alloc_pages_node(cpu_to_node(cpu), + GFP_KERNEL | __GFP_NORETRY, 0); +- if (!page) +- goto failed; ++ /* This is just an optimization and can handle failures */ ++ if (!page) { ++ pr_err("Failed to allocate event buffer\n"); ++ break; ++ } + + event = page_address(page); + memset(event, 0, sizeof(*event)); +@@ -2224,10 +2227,6 @@ void trace_buffered_event_enable(void) + WARN_ON_ONCE(1); + preempt_enable(); + } +- +- return; +- failed: +- trace_buffered_event_disable(); + } + + static void enable_trace_buffered_event(void *data) +-- +2.42.0 +