From: Greg Kroah-Hartman Date: Tue, 3 Dec 2019 21:16:27 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v5.4.2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=943804a10edc09f80d474929b70a7c05f77091cc;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: platform-x86-hp-wmi-fix-acpi-errors-caused-by-too-small-buffer.patch --- diff --git a/queue-4.4/platform-x86-hp-wmi-fix-acpi-errors-caused-by-too-small-buffer.patch b/queue-4.4/platform-x86-hp-wmi-fix-acpi-errors-caused-by-too-small-buffer.patch new file mode 100644 index 00000000000..1684bc0aafb --- /dev/null +++ b/queue-4.4/platform-x86-hp-wmi-fix-acpi-errors-caused-by-too-small-buffer.patch @@ -0,0 +1,70 @@ +From 16245db1489cd9aa579506f64afeeeb13d825a93 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Fri, 22 Nov 2019 19:56:40 +0100 +Subject: platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer + +From: Hans de Goede + +commit 16245db1489cd9aa579506f64afeeeb13d825a93 upstream. + +The HP WMI calls may take up to 128 bytes of data as input, and +the AML methods implementing the WMI calls, declare a couple of fields for +accessing input in different sizes, specifycally the HWMC method contains: + + CreateField (Arg1, 0x80, 0x0400, D128) + +Even though we do not use any of the WMI command-types which need a buffer +of this size, the APCI interpreter still tries to create it as it is +declared in generoc code at the top of the HWMC method which runs before +the code looks at which command-type is requested. + +This results in many of these errors on many different HP laptop models: + +[ 14.459261] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] size 160 (bits) (20170303/dsopcode-236) +[ 14.459268] ACPI Error: Method parse/execution failed [\HWMC] (Node ffff8edcc61507f8), AE_AML_BUFFER_LIMIT (20170303/psparse-543) +[ 14.459279] ACPI Error: Method parse/execution failed [\_SB.WMID.WMAA] (Node ffff8edcc61523c0), AE_AML_BUFFER_LIMIT (20170303/psparse-543) + +This commit increases the size of the data element of the bios_args struct +to 128 bytes fixing these errors. + +Cc: stable@vger.kernel.org +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=197007 +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=201981 +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1520703 +Signed-off-by: Hans de Goede +Signed-off-by: Andy Shevchenko +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/hp-wmi.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/platform/x86/hp-wmi.c ++++ b/drivers/platform/x86/hp-wmi.c +@@ -90,7 +90,7 @@ struct bios_args { + u32 command; + u32 commandtype; + u32 datasize; +- u32 data; ++ u8 data[128]; + }; + + struct bios_return { +@@ -199,7 +199,7 @@ static int hp_wmi_perform_query(int quer + .command = write ? 0x2 : 0x1, + .commandtype = query, + .datasize = insize, +- .data = 0, ++ .data = { 0 }, + }; + struct acpi_buffer input = { sizeof(struct bios_args), &args }; + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; +@@ -207,7 +207,7 @@ static int hp_wmi_perform_query(int quer + + if (WARN_ON(insize > sizeof(args.data))) + return -EINVAL; +- memcpy(&args.data, buffer, insize); ++ memcpy(&args.data[0], buffer, insize); + + wmi_evaluate_method(HPWMI_BIOS_GUID, 0, 0x3, &input, &output); + diff --git a/queue-4.4/series b/queue-4.4/series index 8a9815dd356..41add5dce0f 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -89,3 +89,4 @@ tipc-fix-link-name-length-check.patch net-sched-fix-tc-s-class-show-no-bstats-on-class-with-nolock-subqueues.patch hid-core-check-whether-usage-page-item-is-after-usage-id-items.patch hwrng-stm32-fix-unbalanced-pm_runtime_enable.patch +platform-x86-hp-wmi-fix-acpi-errors-caused-by-too-small-buffer.patch