]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86: samsung-galaxybook: Fix problematic pointer cast
authorArmin Wolf <W_Armin@gmx.de>
Sun, 28 Dec 2025 21:41:31 +0000 (22:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:17:14 +0000 (10:17 +0100)
commit d37cd54ebeac37a763fbf303ed25f8a6e98328ff upstream.

A user reported that reading the charge threshold on his device
results in very strange values (like 78497792) being returned.
The reason for this seems to be the fact that the driver casts
the int pointer to an u8 pointer, leaving the last 3 bytes of
the destination uninitialized. Fix this by using a temporary
variable instead.

Cc: stable@vger.kernel.org
Fixes: 56f529ce4370 ("platform/x86: samsung-galaxybook: Add samsung-galaxybook driver")
Reported-by: Gianni Ceccarelli <dakkar@thenautilus.net>
Closes: https://lore.kernel.org/platform-driver-x86/20251228115556.14362d66@thenautilus.net/
Tested-by: Gianni Ceccarelli <dakkar@thenautilus.net>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20251228214217.35972-1-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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/platform/x86/samsung-galaxybook.c

index 3c13e13d488584300c9765132861be5c2aeca269..755cb82bdb606be4456296a61782bfdbf9d7b49d 100644 (file)
@@ -442,12 +442,13 @@ static int galaxybook_battery_ext_property_get(struct power_supply *psy,
                                               union power_supply_propval *val)
 {
        struct samsung_galaxybook *galaxybook = ext_data;
+       u8 value;
        int err;
 
        if (psp != POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD)
                return -EINVAL;
 
-       err = charge_control_end_threshold_acpi_get(galaxybook, (u8 *)&val->intval);
+       err = charge_control_end_threshold_acpi_get(galaxybook, &value);
        if (err)
                return err;
 
@@ -455,8 +456,10 @@ static int galaxybook_battery_ext_property_get(struct power_supply *psy,
         * device stores "no end threshold" as 0 instead of 100;
         * if device has 0, report 100
         */
-       if (val->intval == 0)
-               val->intval = 100;
+       if (value == 0)
+               value = 100;
+
+       val->intval = value;
 
        return 0;
 }