]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
platform/x86: uniwill-laptop: Fix crash on unexpected battery event
authorArmin Wolf <W_Armin@gmx.de>
Wed, 18 Feb 2026 00:50:59 +0000 (01:50 +0100)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 23 Feb 2026 16:06:41 +0000 (18:06 +0200)
On devices that have not UNIWILL_FEATURE_BATTERY set, the underlying
hardware might still send the UNIWILL_OSD_BATTERY_ALERT event. In such
a situation, the driver will access uninitialized data structures when
handling said event.

Prevent this by only handling the UNIWILL_OSD_BATTERY_ALERT event when
UNIWILL_FEATURE_BATTERY is set.

Fixes: d050479693bb ("platform/x86: Add Uniwill laptop driver")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20260218005101.73680-3-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/uniwill/uniwill-acpi.c

index 4407240168852f82bbeb7c4a87b1a3fa5fc77cc3..e0f3740a6d3af936cd4f2025d7ae4dbc5d9d6f85 100644 (file)
@@ -1359,6 +1359,9 @@ static int uniwill_notifier_call(struct notifier_block *nb, unsigned long action
 
        switch (action) {
        case UNIWILL_OSD_BATTERY_ALERT:
+               if (!uniwill_device_supports(data, UNIWILL_FEATURE_BATTERY))
+                       return NOTIFY_DONE;
+
                mutex_lock(&data->battery_lock);
                list_for_each_entry(entry, &data->batteries, head) {
                        power_supply_changed(entry->battery);