| From 2588e5f1cc8ab530d93744f6a8b9474b061bd26f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 4 Sep 2021 17:56:26 +0000 |
| Subject: platform/x86: wmi: do not fail if disabling fails |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Barnabás Pőcze <pobrn@protonmail.com> |
| |
| [ Upstream commit 1975718c488a39128f1f515b23ae61a5a214cc3d ] |
| |
| Previously, `__query_block()` would fail if the |
| second WCxx method call failed. However, the |
| WQxx method might have succeeded, and potentially |
| allocated memory for the result. Instead of |
| throwing away the result and potentially |
| leaking memory, ignore the result of |
| the second WCxx call. |
| |
| Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> |
| Link: https://lore.kernel.org/r/20210904175450.156801-25-pobrn@protonmail.com |
| Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/platform/x86/wmi.c | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c |
| index 59e9aa0f96436..cb029126a68c6 100644 |
| --- a/drivers/platform/x86/wmi.c |
| +++ b/drivers/platform/x86/wmi.c |
| @@ -353,7 +353,14 @@ static acpi_status __query_block(struct wmi_block *wblock, u8 instance, |
| * the WQxx method failed - we should disable collection anyway. |
| */ |
| if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { |
| - status = acpi_execute_simple_method(handle, wc_method, 0); |
| + /* |
| + * Ignore whether this WCxx call succeeds or not since |
| + * the previously executed WQxx method call might have |
| + * succeeded, and returning the failing status code |
| + * of this call would throw away the result of the WQxx |
| + * call, potentially leaking memory. |
| + */ |
| + acpi_execute_simple_method(handle, wc_method, 0); |
| } |
| |
| return status; |
| -- |
| 2.33.0 |
| |