Patch "platform/x86: wmi: Fix error handling in legacy WMI notify handler functions" has been added to the 6.7-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    platform/x86: wmi: Fix error handling in legacy WMI notify handler functions

to the 6.7-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     platform-x86-wmi-fix-error-handling-in-legacy-wmi-no.patch
and it can be found in the queue-6.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 329632aefbc2ae039df2c8cfcfebde824be611bd
Author: Armin Wolf <W_Armin@xxxxxx>
Date:   Wed Jan 3 20:27:04 2024 +0100

    platform/x86: wmi: Fix error handling in legacy WMI notify handler functions
    
    [ Upstream commit 6ba7843b59b77360812617d071313c7f35f3757a ]
    
    When wmi_install_notify_handler()/wmi_remove_notify_handler() are
    unable to enable/disable the WMI device, they unconditionally return
    an error to the caller.
    When registering legacy WMI notify handlers, this means that the
    callback remains registered despite wmi_install_notify_handler()
    having returned an error.
    When removing legacy WMI notify handlers, this means that the
    callback is removed despite wmi_remove_notify_handler() having
    returned an error.
    
    Fix this by only warning when the WMI device could not be enabled.
    This behaviour matches the bus-based WMI interface.
    
    Tested on a Dell Inspiron 3505 and a Acer Aspire E1-731.
    
    Fixes: 58f6425eb92f ("WMI: Cater for multiple events with same GUID")
    Signed-off-by: Armin Wolf <W_Armin@xxxxxx>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240103192707.115512-2-W_Armin@xxxxxx
    Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 5dd22258cb3b..bd017478e61b 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -686,9 +686,10 @@ acpi_status wmi_install_notify_handler(const char *guid,
 			block->handler_data = data;
 
 			wmi_status = wmi_method_enable(block, true);
-			if ((wmi_status != AE_OK) ||
-			    ((wmi_status == AE_OK) && (status == AE_NOT_EXIST)))
-				status = wmi_status;
+			if (ACPI_FAILURE(wmi_status))
+				dev_warn(&block->dev.dev, "Failed to enable device\n");
+
+			status = AE_OK;
 		}
 	}
 
@@ -729,12 +730,13 @@ acpi_status wmi_remove_notify_handler(const char *guid)
 				status = AE_OK;
 			} else {
 				wmi_status = wmi_method_enable(block, false);
+				if (ACPI_FAILURE(wmi_status))
+					dev_warn(&block->dev.dev, "Failed to disable device\n");
+
 				block->handler = NULL;
 				block->handler_data = NULL;
-				if ((wmi_status != AE_OK) ||
-				    ((wmi_status == AE_OK) &&
-				     (status == AE_NOT_EXIST)))
-					status = wmi_status;
+
+				status = AE_OK;
 			}
 		}
 	}




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux